2012-06-28 70 views
0

我有一个UITableViewController,它显示的只是默认的单元格。可以触摸每个单元格并将其带入第一个视图中每个单元格所在的“帐户”内的列表。prepareForSegue和设置属性设置

我连接一切了一个赛格瑞,然后在我的第一个观点我打电话:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"showDetail"]) { 
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
     Account *nextAccount = [self.list objectAtIndex:indexPath.row]; 
     DetailViewController *viewController = (DetailViewController *)[segue destinationViewController]; 
     viewController.account = nextAccount; 
    } 
} 

,然后在详细视图中的viewDidAppear:(BOOL)动画我说:

- (void)viewDidAppear:(BOOL)animated { 
self.list = [self.account.list mutableCopy]; 
} 

和那么我有一个UITableViewController的细节视图,但在cellForRowAtIndexPath:方法我访问self.list,但它似乎并没有工作。我知道我的cellForRowAtIndexPath:工作,因为早些时候我做了一些模板工作的方法,它工作正常。这似乎只是prepareForSegue:不工作或财产没有设置。

在此先感谢!

回答

0

它可能试图在调用viewDidAppear之前设置详细表视图。而是尝试覆盖数据模型的setter:

-(void)setList:(List*)list // or whatever type list is 
{ 
    if (_list != list) { 
     _list = [list mutableCopy]; 
    } 
} 

然后它应该在视图加载之前创建副本。

此外,如果你要覆盖viewDidAppear,一定要调用父类:

[super viewDidAppear]; 
0

使用NSLog并检查每个元素!= nil。 (nextAccount等)Objective C将很乐意让你发送消息给nil对象而不会抛出错误消息。

同时在你的segue条件语句中加入一条日志语句以确保它被调用。

+0

OK让我去试试 – muscletech