应用程序尝试在 didSelectRowAtIndexPath 中将 nil 视图控制器推送到目标上
Posted
技术标签:
【中文标题】应用程序尝试在 didSelectRowAtIndexPath 中将 nil 视图控制器推送到目标上【英文标题】:Application tried to push a nil view controller on target in didSelectRowAtIndexPath 【发布时间】:2015-09-10 14:50:18 【问题描述】:我们有两个UIViewControllers
firstViewController
SecondViewController
.当我们点击the UItableViewCell
时,我们希望它与SecondViewController
保持一致。
我们试过这样
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
UIStoryboard *storyboard;
destinationController = [[UserDetails alloc] init];
destinationController = (UserDetails *)[storyboard instantiateViewControllerWithIdentifier:@"User"];
destinationController.FriendlyName.text=[usernameFriendlyName objectAtIndex:indexPath.row];
UIBarButtonItem * backButton =[[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:self action:nil];
destinationController.navigationItem.backBarButtonItem = backButton;
[self.navigationController pushViewController:destinationController animated:TRUE];
请指导我们。我们的代码有什么问题。
【问题讨论】:
一件事是您没有正确分配情节提要。尝试使用类方法storyboardWithName
从正确的故事板文件生成故事板。developer.apple.com/library/prerelease/ios/documentation/UIKit/…:
显然故事板在那里是零
为什么要以编程方式执行此操作,只需使用情节提要
在尝试编写一些东西之前,您可能应该阅读一些有关 Objective C 的书。您的 storyboard
为 nil,因此向其发送消息返回 nil。您还可以实例化 destinationController
并无缘无故地覆盖它
@u.gen 我们需要 didSelectRowAtIndexPath。
【参考方案1】:
不需要做这一切。只需用 Push segue 连接两个 viewController。 提供一些标识符以进行转场,只需将这一行写在didSelectRowAtIndexPath
[self performSegueWithIdentifier: @"Your segue identifier" sender: self];
要将数据从一个视图传递到另一个视图,请使用PrepareForSegue
方法
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"Your segue identifier"])
// Get reference to the destination view controller
YourViewController *vc = [segue destinationViewController];
// Pass any objects to the view controller here, like...
[vc setMyObjectHere:object];
【讨论】:
以上是关于应用程序尝试在 didSelectRowAtIndexPath 中将 nil 视图控制器推送到目标上的主要内容,如果未能解决你的问题,请参考以下文章
无法获取 didSelectRowAtIndexPath 来注册点击