Iphone 选择UITableViewCell后,导航到新的DetailViewController

Iphone 选择UITableViewCell后,导航到新的DetailViewController,iphone,objective-c,ios,Iphone,Objective C,Ios,问题:在选择特定的uitableviewcell时,应打开一个新的DetailViewController。我已经在didSelectRowAtIndexPath中编写了代码,但是当我单击单元格时,它显示了一个运行时错误 我尝试过使用[self.navigationController presentModalViewController:jack-animated:YES]呼叫但当我这样做时,我的视图控制器没有打开 我尝试的另一种方法是通过[self.navigationController

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

我尝试过使用
[self.navigationController presentModalViewController:jack-animated:YES]呼叫但当我这样做时,我的视图控制器没有打开

我尝试的另一种方法是通过
[self.navigationController performsguewithidentifier:@“JacketDetails”发送方:self]

我在segued中指定了标识符,在inspector中指定了“JacketDetails”,但在这里我得到了一个run yime错误。我已将Segue从
UITABLEVIEWCELL
连接到
VIEWCONTROLLER

当我单击行时,
JacketDetailViewController
应处于打开状态。我已经创建了类
JacketDetailViewController
,对于
New ViewController
,我已经在inspector中为此设置了类

我不知道为什么它没有显示segue,我已经在inspector中给出了标识符,并正确地从
tableviewcell
连接到新的视图控制器

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

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

TshirtDetailViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)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) 
2013-01-07 10:52:21.020 Kidshopee[617:f803]***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:“接收器()没有标识符为“JacketDetails”的序列”
***第一次抛出调用堆栈:
(0x13bf052 0x1550d0a 0xdd24b 0x3e8e 0xa671d 0xa6952 0x92e86d 0x1393966 0x1393407 0x12f67c0 0x12f5db4 0x12f5ccb 0x12a8879 0x12a893e 0x16a9b 0x1b08 0x1a65 0x1)
终止引发异常的调用(gdb)

尝试使用以下行打开视图:

    YoutubeViewController *objYoutubeViewController = [[YoutubeViewController alloc]initWithNibName:@"YoutubeViewController" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:objYoutubeViewController animated:YES];
    [objYoutubeViewController release];
代替YoutubeViewController,给出视图控制器类名并更改这些行

根据您的要求进行检查。如果您使用故事板,请尝试以下操作:

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
 bookmarkViewController *myVC = (bookmarkViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"bookmarkViewController"]
[self presentModalViewController:myVC animated:YES];
代替bookmarkViewController,给出控制器名称并检查。在拖放视图中

主情节提要中的控制器提供正确的类名,如下图所示:


请给出要打开的视图控制器名称,以代替我的书签ViewController名称。

尝试使用以下行打开视图:

    YoutubeViewController *objYoutubeViewController = [[YoutubeViewController alloc]initWithNibName:@"YoutubeViewController" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:objYoutubeViewController animated:YES];
    [objYoutubeViewController release];
代替YoutubeViewController,给出视图控制器类名并更改这些行

根据您的要求进行检查。如果您使用故事板,请尝试以下操作:

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
 bookmarkViewController *myVC = (bookmarkViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"bookmarkViewController"]
[self presentModalViewController:myVC animated:YES];
代替bookmarkViewController,给出控制器名称并检查。在拖放视图中

主情节提要中的控制器提供正确的类名,如下图所示:

请给出要打开的视图控制器名称,以代替“我的书签”“视图控制器名称”。

可以尝试使用此选项-

JacketDetailController *jacket =[[JacketDetailController alloc]initWithNibName:@"JacketDetailController" bundle:nil];];///Change string as your nib name.
那么如果它的导航基础应用程序-

[self.navigationController pushViewController:jacket animated:YES];
[self presentModalViewController:jacket animated:YES];
然后是它的viewController基础应用程序-

[self.navigationController pushViewController:jacket animated:YES];
[self presentModalViewController:jacket animated:YES];
你可以试试这个-

JacketDetailController *jacket =[[JacketDetailController alloc]initWithNibName:@"JacketDetailController" bundle:nil];];///Change string as your nib name.
那么如果它的导航基础应用程序-

[self.navigationController pushViewController:jacket animated:YES];
[self presentModalViewController:jacket animated:YES];
然后是它的viewController基础应用程序-

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

根据您收到的错误“没有标识符为“JacketDetails”的segue”,您对segue的调用有问题。我发现序列名称在正常工作时存在问题,除非我将我在故事板中给出的序列名称复制并粘贴到我的.m文件中。即使拼写和大小写是正确的,我也多次发现,复制和粘贴已经解决了这个问题

根据您收到的错误“没有标识符为“JacketDetails”的segue”,您对segue的调用有问题。我发现序列名称在正常工作时存在问题,除非我将我在故事板中给出的序列名称复制并粘贴到我的.m文件中。即使拼写和大小写是正确的,我也多次发现,复制和粘贴已经解决了这个问题

如果您将情节提要中的一个segue从表视图单元连接到另一个控制器,那么您根本不需要这些代码来启动segue。您应该实现prepareForSegue以将所需的信息传递给detail controller,但不需要其他代码。

如果您将情节提要中的一个segue从table view单元格连接到另一个控制器,那么您根本不需要这些代码来触发segue。您应该实施prepareForSegue以将所需信息传递给详细信息控制器,但不需要其他代码。

不要在导航控制器上调用
performSegueWithIdentifier:sender:
!只有自定义viewController才能有分段。你自己说吧

替换

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


不要在导航控制器上调用
performsguewithidentifier:sender:
!只有自定义viewController才能有分段。你自己说吧

替换

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


伙计们,当我点击任何一个特定的单元格时,相应的视图控制器应该被打开,这里我刚刚拿了一个样本,当我点击它时,它会显示新的JacketDetail视图控制器..所以当我点击其他选项时,相应的视图控制器应该被打开..我在使用故事板,我不知道nitWithNibName:@“JacketDetailController”bundle:nil];]将在此处工作。您的问题不清楚…我想您希望在单元格上单击打开另一个视图控制器,对吗?:我尝试使用您的解决方案时出错“无法在bundle中加载NIB:'NSBundle(loaded)”,名称为“JacketDeailViewController”***第一次抛出调用堆栈:(0x13bf052 0x1550d0a 0x1367a78 0x13679e9 0x234838 0xdbe2c 0xdc3a9 0xdc5cb 0xdc941 0xee47d 0xee66f 0xee93b 0xef3df 0xef986 0xef5a4 0x3e94 0xa671d 0xa6952 0x92e86d 0x1393966 0x139