2012-06-28 71 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