从UITableViewController启动UIViewcontroller崩溃应用程序

时间:2011-12-30 03:12:25

标签: iphone ios5 storyboard segue

我有一个UItableViewController。在这个类里面有以下方法,我试图启动另一个UIViewController。我尝试使用segue连接两个并给它一个标识符,然后使用这个版本:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {    
    NSLog(@"About to launch MyDetail View controller");
    [self performSegueWithIdentifier:@"myDetailSegue" sender:self];
}

那没有用,应用程序冻结了,我在main.m文件中收到如下消息:“”线程1收到信号Sigabrt“

然后删除了segue并尝试按如下方式实例化UIViewcontroller,

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"About to launch my Detail View controller");
    UIStoryboard *sboard = [UIStoryboard storyboardWithName:@"iPhone" bundle:nil];
    UIViewController *myDetailVC = [sboard instantiateViewControllerWithIdentifier:@"myDetailVC"];
    [self.navigationController pushViewController:myDetailVC animated:YES];
}

哪个有效。但现在我很困惑。为什么UIStoryboard方式工作而segue不是??? 有人可以帮忙,我很困惑。

1 个答案:

答案 0 :(得分:3)

我不明白你面临的确切问题,但我想告诉你,因为你首先使用uitableview,请将其单元格连接到新视图控制器并选择“推送”segue方法。完成此操作后,在应用程序中添加以下代码,而不是用户 didselectrowatindexpath 方法。

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

    / *  选择行时,segue会将详细视图控制器创建为目标。  将详细视图控制器的详细信息项设置为与所选行关联的项。  * / if([[segue identifier] isEqualToString:@“Showcategorydetails”]){

    NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow];
    CategoryDetailsController *detailViewController = [segue destinationViewController];
    detailViewController.category_title = [maincategories_array objectAtIndex:selectedRowIndex.row];
    

    } }