2012-06-10 28 views
0

我想在故事板,核心數據程序中的兩個視圖控制器之間傳遞一個字符串。我設置它的方式我只希望下一個視圖只能用於一個部分。因此使用「didSelectRowAtIndexPath」而不是「prepareForSegue」。下面是我的代碼「didSelectRow ...」,「五」是被推送的viewController類。segue didSelectRowAtIndexPath無法傳遞字符串

- (void)tableView:(UITableView *)tableView 
     didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    if (indexPath.section == 0) 
    { 
     five *five=[[five alloc]init]; 
     five.delegate = self; 
     [self performSegueWithIdentifier:@"segue1" sender:self]; 
    } 
} 

「two」是父視圖。以下是在「五」類中創建的協議中使用的方法。 「friendString」在「兩」類中,「fiveString」在「五」中。當視圖彈出時,這些字符串應該是相同的,然後我使用在「two」中的UITextField中的「five」中添加的字符串。但是,當視圖彈出時它不會更新。

- (void)popFive:(five *)controller 
{ 
    self.friendString=controller.fiveString; 
    [self update]; 
    [self.tableView reloadData]; 
} 

我相信這個問題是關係到塞克是如何做到「didSelectRow ......」任何幫助或想法將不勝感激。謝謝。

+0

我認爲當使用「didSelectRow ...」爲一個segue時,你也必須添加「prepareForSegue」方法。添加下面的代碼似乎使它工作正常。 – user1083689

回答

0

我認爲當使用「didSelectRow ...」作爲segue時,您還必須使用「prepareForSegue」。當我添加它時,它似乎能夠在子視圖彈出時在兩個視圖之間傳遞字符串。我包含下面的代碼

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

if (indexPath.section == 0) 
{ 
    [self performSegueWithIdentifier:@"segue1" sender:self]; 
} 

} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 

if ([segue.identifier isEqualToString:@"segue1"]) 
{ 
    five *five = segue.destinationViewController; 
    five.delegate = self; 

} 
}