2012-06-10 23 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; 

} 
}