2012-11-20 33 views
5

我有一個表格單元格中有segue的故事板。我想設置了一些數據的一些屬性當行被選中,所以我做到以下幾點:故事板segue在UITableView的didSelectRow之前被調用

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [[ProperyManager sharedPropertyManager]setSelectedRow:[verseIds objectAtIndex:indexPath.row]]; 
    [[ProperyManager sharedPropertyManager]setID:[poemIDs objectAtIndex:indexPath.row]]; 
    [[ProperyManager sharedPropertyManager]setRowToReturn:[NSString stringWithFormat:@"%i",indexPath.row]]; 


} 

的問題是,目標視圖控制器的視圖控制器生命週期方法(viewWillAppear中等等)之前被調用上面的didSelectRow方法,因爲segue在委託方法執行之前推送視圖。

我該如何解決這個問題?

回答

14

不要將單元的Segue從VC創建到新的VC,而是將Segue從舊的VC設置到新的VC並給Segue一個標識符。

然後內

didSelectRowAtIndexPath你可以叫

[self performSegueWithIdentifier:@"Segue" sender:self]

+0

謝謝,讓我的一天 –

14

Rawkode的回答是一個很好的解決方案 - 另一種是,在prepareForSegue:,您可以訪問表視圖的所選行( sender參數將是表格視圖單元格,然後您可以執行[self.tableView indexPathForCell:(UITableViewCell*)sender]以獲取索引路徑)並設置您在此時需要的任何內容。

+0

謝謝你的回答幫助我瞭解別的東西,並瞭解更多:) –

+0

完美的jrturton。這正是我正在尋找的... –