Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从另一个控制器进行切换_Objective C_Delegates_Tableview_Uistoryboard_Segue - Fatal编程技术网

Objective c 从另一个控制器进行切换

Objective c 从另一个控制器进行切换,objective-c,delegates,tableview,uistoryboard,segue,Objective C,Delegates,Tableview,Uistoryboard,Segue,这就是我的处境。我有两张桌子的视图。在一个视图中使用两个TableView进行搜索之后,我找到了制作两个额外控制器的解决方案。即tbl1DatasourceDelegate和tbl2DatasourceDelegate。现在,当我按下一个单元格时,它应该转到另一个viewController。我的tbl1DatasourceDelegate中有此代码 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSInde

这就是我的处境。我有两张桌子的视图。在一个视图中使用两个TableView进行搜索之后,我找到了制作两个额外控制器的解决方案。即tbl1DatasourceDelegate和tbl2DatasourceDelegate。现在,当我按下一个单元格时,它应该转到另一个viewController。我的tbl1DatasourceDelegate中有此代码

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

    [detail setNewsItem:news];
}
所以,当我选择一个单元格时,我会创建一个playerNewsObject并将其发送回控制器,其中包含两个TableView。当我回到我的控制器,里面有两个表视图。(我从中分离的控制器)我在这里执行函数setNewsItem,您可以看到代码

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

    }
之所以执行此代码,是因为我的日志显示了我在tableview上推送的新闻项。但它不会继续下去。我正在使用下面的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''
**由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“Receiver()没有标识符为“showPlayerDetailNews”的序列”
有人能帮我吗


感谢您

无法启动segue的两个原因:

1) 序列标识符拼写错误。仔细检查脚本中使用的标识符和代码。旁注:标识符在情节提要中不必是唯一的,只适用于每个viewcontroller。假设您有一个viewcontrollerA和一个viewcontrollerC和一个viewcontrollerB,它们允许具有相同的标识符

2) 正在尝试启动一个未连接到要从中启动的UIViewController的segue。例如:您有一个segue“segueA”,它将viewcontrollerA连接到B。在这种情况下,您唯一能够使用
[self-performsguewithidentifier:@“segueA”发送方:nil]
的地方是A