2012-10-20 99 views
0

这是我的情况。我有两个表格视图。在一个视图中搜索完两个tableview后,我找到了解决方案来制作2个额外的控制器。即tbl1DatasourceDelegate和tbl2DatasourceDelegate。现在当我推入一个单元格时,它应该继续到另一个viewController。我在我的tbl1DatasourceDelegate中有这个代码。从另一个控制器做segue

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    PlayerNews *news = [_tableSource objectAtIndex:indexPath.row]; 
    PlayerDetailController *detail =[[PlayerDetailController alloc]init]; 

    [detail setNewsItem:news]; 
} 

所以,当我选择一个单元格我做一个playerNewsObject,并与其中的2个tableviews发送回我的控制器。当我回到我的控制器中时,其中有两个表格。 (我从那里继续的控制器)我执行功能setNewsItem在这里你看到的代码。

-(void)setNewsItem:(PlayerNews *)newsItem{ 
     if(![_newsItem isEqual:newsItem]){ 
      _newsItem = newsItem; 
     } 
     NSLog(@"Player detail controller newsItem object: %@", _newsItem); 
     [self performSegueWithIdentifier:@"PlayerDetailNews" sender:tblNews]; 

    } 

执行此代码是因为我的日志显示我在tableview上推送的newsItem。但它不会继续下去。我正在使用以下prepareForSegue。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    NSLog(@"comes in this segue"); 
    // ask NSFRC for the NSMO at the row in question 
    if ([segue.identifier isEqualToString:@"PlayerDetailNews"]) { 
     [segue.destinationViewController setImageURL:[NSURL URLWithString:_newsItem.image]]; 
     [segue.destinationViewController setNewsTitle:_newsItem.title]; 
     [segue.destinationViewController setNewsDescription:_newsItem.content]; 
     [segue.destinationViewController setNewsCopy:_newsItem.image_copyright]; 
     [segue.destinationViewController setNewsUrl:_newsItem.url]; 
     [segue.destinationViewController setNewsShortDescription:_newsItem.summary]; 
    } 
} 

它没有进入此方法,因为它不打印日志。它崩溃,出现以下错误。

** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<tblPlayerNewsDatasourceDelagete: 0x1e5e44c0>) has no segue with identifier 'showPlayerDetailNews'' 

有人能帮助我吗?

谢谢你不能够推出赛格瑞

回答

0

两个原因:

1)拼错SEGUE标识符。仔细检查故事板中使用的标识符和您的代码。附注:标识符不一定在故事板中是唯一的,仅适用于每个视图控制器。比方说,你有视图 - 控制一个与顺着接下去和视图 - 控制ç用顺着接下去,允许它们具有相同的标识。

2)试图启动一个没有连接到UIViewController的segue,你试图从中启动它。因此,例如:您有segue'segueA',它连接视图控制器AB。在这种情况下,您可以使用的唯一地方是[self performSegueWithIdentifier:@"segueA" sender:nil]A