问题:在选择特定的 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)
尝试使用这些行打开 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 给出正确的类名,如下图所示:
代替我的 bookmarkViewController 名称,给出您要打开的 View Controller 名称。
关于iphone - 在选择 UITableViewCell 时导航到新的 DetailViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14190370/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |