如何将数组从表格视图拉到详细视图?
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++;
【讨论】:
以上是关于如何将数组从表格视图拉到详细视图?的主要内容,如果未能解决你的问题,请参考以下文章