如何将数组从表格视图拉到详细视图?

Posted

技术标签:

【中文标题】如何将数组从表格视图拉到详细视图?【英文标题】:How to pull Array from tableview to detail view? 【发布时间】:2014-03-20 22:23:45 【问题描述】:

我正在使用字典来用对象填充 tableview。表格视图单元格设置为副标题,此字典中的两个数组用于显示表格视图的数据(标题和子)。现在我很感兴趣如何将这本字典中的其余数组发送到下一个“详细视图”。我正在使用 Parse 来存储这个字典数据。激活单元格时,我只需要在我的详细信息中显示来自同一数据库的另外 3 个字段。谢谢

【问题讨论】:

【参考方案1】:

如果我理解您的问题,您想在detail view 中显示其他数组的其余数据。

使用表视图“didSelectRowAtIndexPath”的delegate method。在此将您要使用的控制器分配为Controller 中的Detail View,将您获取的获取单元格索引的信息分配给此Detail Controller,然后推送到此详细信息视图。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

   DetailController *detailVC=[[UIControllerView alloc] initWithNibName:@"DetailController" bundle:nil];

   detailVC.textFieldOne.text=[self.arrayOne objectAtIndex:indexPath.row];
   detailVC.textFieldTwo.text=[self.arrayTwo objectAtIndex:indexPath.row];
   detailVC.textFieldThree.text=[self.arrayThree objectAtIndex:indexPath.row];

   [self.navigationController pushViewController:detailVC animated:YES];

【讨论】:

如果你有时间看看,这是我整天都在敲打我的头的完整主题***.com/questions/22544672/… 我刚刚试过你上面的方法,它说不兼容的指针类型用“tableview”控制器类型的表达式初始化“详细视图”【参考方案2】:

我看到你在使用 Storyboards。

尝试用Key-Value-Coding 分配prepareForSegue 上的值:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

    if ([segue.destinationViewController isKindOfClass: [BookDetailViewController class]]) 
        BookDetailViewController *destination = segue.destinationViewController;

    SEL selector = NSSelectorFromString(@"setFile:");

    if ([destination respondsToSelector:selector]) 

            NSIndexPath *indexPath = [self.bookstableview indexPathForCell:sender];

            PFObject * object = [Booksarray objectAtIndex:indexPath.row];

            PFFile *file = [object objectForKey:@"BooksTableView"];

            [destination setValue:file forKey:@"file"];
        


    

并尝试在对 didSelectRow 执行 segue 之前删除对 deselectRowAtIndexPath: 的调用。如果您不想显示选定的行,可以在 Attributes Inspector 上编辑该行,在 Storyboard 视图中禁用 Table View"Show selection on touch"

【讨论】:

似乎不接受“setValue:selection”。说未声明的选择器,我也在“didselectrow”函数之后添加了一个断点,它似乎根本没有调用为 segue 做准备。我删除了选择器部分并将其替换为 [[segue destinationViewController] setFile:file];应用程序运行良好,除非我单击 tableview 单元格时它不会启动 segue。 对不起,我更新了我的答案,我给键 @"file" 分配了一个错误的值,不是选择,是文件对象。所以使用 setValue:file 是的,我摆脱了 segue 标识符,现在它推动了 segue,它应该显示的信息不会显示在标签或图像中。但它确实显示它在调试器中读取 然后尝试传递 PFObject,而不是 PFFile,我猜它属于您的图像。然后你用相关的键得到你想要显示的对象。 还是不行,明天再试试。谢谢你的帮助。我花了一整天的时间试图获得一些字符串和图像,哈哈……【参考方案3】:

要显示来自PFObject 的图像:

PFQuery *query = [PFQuery queryWithClassName:@"nameOfParseClass"];

NSArray *objectsPFFounded=[NSArray arrayWithArray:[query findObjects]];

int i=0;
        while (i<count)
            PFFile *ImageFile = [objectsPFFounded objectAtIndex:i][@"nameOfImageObjectKey"];
            [ImageFile getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) 
                if (!error) 

                   //HERE YOU GOT THE IMAGE
                   UIImage *image=[UIImage imageWithData:imageData]

                
            ];
            i++;
        

【讨论】:

以上是关于如何将数组从表格视图拉到详细视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何从动态创建的表格视图单元格的输入字段中将数据检索到数组

如何通过数组将数据传递给表格视图?

如何将数组元素放在表格视图单元格上

如何将字符串数组从视图模型传递到 swiftUI 中播放歌曲

将单元格数组项传递给另一个视图控制器

如何在表格视图中显示数组值