gpt4 book ai didi

iphone - 通过 Segue 会出现错误

转载 作者:行者123 更新时间:2023-11-29 04:29:02 26 4
gpt4 key购买 nike

您好,我目前已按下选择按钮,将我的表格 View 推送到详细 View 。我还有此代码来发送所选表格单元格的名称:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *acell = [tableView cellForRowAtIndexPath:indexPath];
selectedCell = acell.textLabel.text;

DetailViewController *myDetViewCont = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:[NSBundle mainBundle]];

myDetViewCont.navigationItem.title = selectedCell;
[self.navigationController pushViewController:myDetViewCont animated:YES];

}

它构建成功,但在模拟器中它抛出一个错误:

@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
Thread: 1 signal: SIGABRT

我查过类似的问题,但还没有找到解决方案。有什么帮助吗?

好的有关错误的附加信息:

[self.navigationController pushViewController:myDetViewCont animated:YES];

最佳答案

如果您使用 Storyboard,则以下行没有意义:

DetailViewController *myDetViewCont = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:[NSBundle mainBundle]];

您的项目中是否有名为 DetailViewController.xib 的 NIB 文件?大概不是。因此,myDetViewCont 将为nil,并且您将收到异常。如果您确实有该 NIB,那么两者之间的推送转场是什么(因为您无法从 Storyboard转场到 NIB)?

假设您确实想使用 Storyboard,而不是 NIB,如果您在 Controller 之间已经有一个推送转场,请为该转场提供一个标识符(您在 Interface Builder 中执行此操作;在下面的代码中,我将只使用 youridentifier 作为您指定的任何内容的占位符,您将用正确的标识符替换它),然后您应该使用 segue 进行转换:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *acell = [tableView cellForRowAtIndexPath:indexPath];
[self performSegueWithIdentifier:@"youridentifier" sender:acell];
}

如果您想将数据发送到新 Controller ,您可以使用 prepareForSegue 来执行此操作:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"youridentifier"])
{
if ([sender isKindOfClass:[UITableViewCell class]])
{
UITableViewCell *selectedCell = sender;
UIViewController *myDetViewCont = segue.destinationViewController;
myDetViewCont.navigationItem.title = selectedCell.textLabel.text;
}
else
{
NSLog("%s Was expecting sender to be a tableviewcell", __FUNCTION__);
}
}
}

关于iphone - 通过 Segue 会出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11956093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com