OStack程序员社区-中国程序员成长平台

标题: iphone - 在选择 UITableViewCell 时导航到新的 DetailViewController [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 00:22
标题: iphone - 在选择 UITableViewCell 时导航到新的 DetailViewController

问题:在选择特定的 uitableviewcell 时,应该打开一个新的 DetailViewController。我已经在 didSelectRowAtIndexPath 中编写了代码,但是当我单击单元格时,它向我显示运行时错误。

我尝试使用 [self.navigationController presentModalViewController:jacket animated:YES ]; 调用,但是当我这样做时,我的 View Controller 没有打开。

我尝试的另一种方法是 [self.navigationController performSegueWithIdentifier"JacketDetails"sender:self ];.

我在检查器中有“JacketDetails”的segued 中指定的标识符,但在这里我得到一个运行yime 错误。我已经从 UITABLEVIEWCELL Hook Segue 到 VIEWCONTROLLER

当我点击行 JacketDetailViewController 应该是打开的。我已经创建了类 JacketDetailViewController 并且对于 New ViewController 我已经在检查器中为此设置了类。

我不知道为什么它没有显示 segue ,我已经在检查器中给出了标识符并正确地从 tableviewcell Hook 到新的 View Controller 。

JacketDetailViewController 我想显示夹克列表。目前它是空白的ViewController

我的代码如下。你能提出一个解决方案吗?我是这个领域的自学初学者。我可能犯了一些小错误。我用谷歌搜索了我的问题并试图解决它,但我已经在这里停留了几天。

TshirtDetailViewController.m

- (void)tableViewUITableView *)tableView didSelectRowAtIndexPathNSIndexPath *)indexPath
{
    // Navigation logic may go here. Create and push another view controller.

    [tableView deselectRowAtIndexPath:indexPath animated:YES ];

    JacketDetailController *jacket =[[JacketDetailController alloc]init];

    NSInteger index =indexPath.row;

    NSLog(@"Row:%d",index);


    NSString *titleString = [[NSString alloc] initWithFormat:[jackets objectAtIndex:indexPath.row]];


    NSLog(@"%@",titleString);
    jacket.title=titleString;


    // ...
    // Pass the selected object to the new view controller.

    [self.navigationController performSegueWithIdentifier"JacketDetails" sender:self ];


  //  [self.navigationController presentModalViewController:jacket animated:YES ];

}


@end

控制台错误:

2013-01-07 10:52:21.020 KidsShopee[617:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<UINavigationController: 0x6a5fac0>) has no segue with identifier 'JacketDetails''

*** First throw call stack:

(0x13bf052 0x1550d0a 0xdd24b 0x3e8e 0xa671d 0xa6952 0x92e86d 0x1393966 0x1393407 0x12f67c0 0x12f5db4 0x12f5ccb 0x12a8879 0x12a893e 0x16a9b 0x1b08 0x1a65 0x1)
terminate called throwing an exception(gdb) 



Best Answer-推荐答案


尝试使用这些行打开 View :

    YoutubeViewController *objYoutubeViewController = [[YoutubeViewController alloc]initWithNibName"YoutubeViewController" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewControllerbjYoutubeViewController animated:YES];
    [objYoutubeViewController release];

代替 YoutubeViewController 给你的 View Controller 类名并更改这些行

根据您的情况并检查。如果您使用 Storyboard ,请尝试如下操作:

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName"MainStoryboard" bundle:nil];
 bookmarkViewController *myVC = (bookmarkViewController *)[mainStoryboard instantiateViewControllerWithIdentifier"bookmarkViewController"]
[self presentModalViewController:myVC animated:YES];

代替bookmarkViewController 给出您的 Controller 名称并检查。在拖放 View 中

主 Storyboard中的 Controller 给出正确的类名,如下图所示:enter image description here

代替我的 bookmarkViewController 名称,给出您要打开的 View Controller 名称。

关于iphone - 在选择 UITableViewCell 时导航到新的 DetailViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14190370/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4