我正在tableViewController中显示项目列表,然后当选择一行时,将带有.xib文件的viewController压入堆栈,在textView中提供更详细的项目说明,并选择一些UIButtons来选择采取进一步行动。到目前为止,所有这些都有效。
我遇到的问题是将另一个viewController推送到堆栈上,其中包含可编辑的textViews,其中包含tableView中选择的原始对象的信息。我可以让viewController和.xib加载,但不能加载数据。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
JASDetailViewController *dvc = [[JASDetailViewController alloc]init];
NSArray *ideas = [[JASIdeaStore sharedStore]allIdeas];
JASIdea *selectedIdea = ideas[indexPath.row];
dvc.idea = selectedIdea;
[self.navigationController pushViewController:dvc animated:YES];
}
这完全填充了DetailViewController。然后,当移动到下一个viewController时:
- (IBAction)editButton:(id)sender
{
JASEditViewController *evc = [[JASEditViewController alloc]init];
//NSIndexPath *path = (NSIndexPath *)sender;
//NSIndexPath *path = [[NSIndexPath alloc]init];
//path = [NSIndexPath indexPathForItem:0 inSection:0];
NSArray *ideas = [[JASIdeaStore sharedStore]allIdeas];
JASIdea *selectedIdea = // Looking for a solution here. . .
evc.idea = selectedIdea;
[self.navigationController pushViewController:evc animated:YES];
}
我可以加载EditViewController,但不能加载数据。差距和注释掉的部分代表了我试图让它发挥作用的一些尝试。通过指定一个特定的indexPath,我可以显示一个想法,但是无法从tableView中获取原始选择以通过。
答案 0 :(得分:0)
你不想要这个吗?
JASIdea *selectedIdea = self.idea;
如果我正确理解您的代码,您将从JASDetailViewController
上的编辑按钮转到JASEditViewController
,但JASIdea
实例保持不变。您已将selectedIdea
从表格视图的didSelectRowAtIndexPath
传递到JASDetailViewController.idea
。这意味着当你在self.idea
JASDetailViewController.editButton
就会出现这种情况
答案 1 :(得分:0)
由于您是从共享实例获取数据,因此无需将selectedIdea传递给JASDetailViewController。相反,你应该创建一个属性,让我们称之为selectedIndex,并传递它。这样,您也可以将该值传递给JASEditViewController。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
JASDetailViewController *dvc = [[JASDetailViewController alloc]init];
dvc.selectedIndex = indexPath.row;
[self.navigationController pushViewController:dvc animated:YES];
}
在JASDetailViewController的viewDidLoad中,您可以使用
获取所选的想法JASIdea *selectedIdea = ideas[self.selectedIndex];