这是我的第一篇文章,所以请轻轻一点。
我在xcode中使用基于Split View的基本应用程序,但已对其进行了编辑,以便rootViewController不会简单地更新detailViewController,而是将新的UITableViewController(taskViewController)推送到导航堆栈。
我的问题是,当我现在从taskViewController调用以下内容时没有任何反应:
detailViewController.detailItem = [NSString stringWithFormat:@"Row %d", indexPath.row];
如果我从rootViewController调用它,而不是将新的UITableView推送到堆栈上,它就可以工作。
当选择一个单元格时,这是我的rootViewController代码:
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
TaskViewController *taskViewController = [[TaskViewController alloc] init];
taskViewController.title = [NSString stringWithFormat:@"Unit %d",indexPath.row];
[self.navigationController pushViewController:taskViewController animated:YES];
[taskViewController release];
}
我在这里做错了吗?我是否在UISplitViewController的rootViewController中正确使用导航控制器?
答案 0 :(得分:5)
你的rootViewController可以访问detailViewController,因为它有一个referance。如果你将一个新控制器推到导航堆栈上,那么不会自动了解DetailViewController。
你的taskVC中有NSLog
'd detailViewController
,看它是否有指针?
您通常会在创建时将其设置为:
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
TaskViewController *taskViewController = [[TaskViewController alloc] init];
taskViewController.title = [NSString stringWithFormat:@"Unit %d",indexPath.row];
taskViewController.detailViewController = self.detailViewController;
[self.navigationController pushViewController:taskViewController animated:YES];
[taskViewController release];
}