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

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

【问题讨论】:

    标签: objective-c arrays parsing uitableview segue


    【解决方案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];
    }
    

    【讨论】:

    • 如果你有时间看看,这是我整天都在敲打我的头的完整主题stackoverflow.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++;
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 2013-07-29
      • 2011-11-25
      • 1970-01-01
      • 2014-08-01
      相关资源
      最近更新 更多