2012-10-20 101 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