Ios 如何将initWithNibName更改为故事板使用?
我正在使用ray的以下教程 除了要从didselectrow填充的详细视图外,我正在使所有内容正常工作 这就是他所拥有的Ios 如何将initWithNibName更改为故事板使用?,ios,tableview,didselectrowatindexpath,Ios,Tableview,Didselectrowatindexpath,我正在使用ray的以下教程 除了要从didselectrow填充的详细视图外,我正在使所有内容正常工作 这就是他所拥有的 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if (self.details == nil) { self.details = [[[FailedBanksDetailViewController allo
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (self.details == nil) {
self.details = [[[FailedBanksDetailViewController alloc] initWithNibName:@"FailedBanksDetailViewController" bundle:nil] autorelease];
}
FailedBankInfo *info = [_failedBankInfos objectAtIndex:indexPath.row];
_details.uniqueId = info.uniqueId;
[self.navigationController pushViewController:_details animated:YES];
[self performSegueWithIdentifier:@"testID" sender:self.view];
}
但是,它不适用于故事板
有人能帮我吗,我到处找答案 试试看:
self.details = [self.storyboard instantiateViewControllerWithIdentifier:@"FailedBanksDetailViewController"];
其中failedbanksdeailviewcontroller
是主情节提要中视图控制器的标识符
由于您正在使用,您可以查看故事板示例。试试:
self.details = [self.storyboard instantiateViewControllerWithIdentifier:@"FailedBanksDetailViewController"];
其中failedbanksdeailviewcontroller
是主情节提要中视图控制器的标识符
由于您正在使用,您可以查看故事板示例。有几个选项:
您可以为要转换到的场景提供一个“情节提要id”(在Interface Builder中执行此操作),然后使用InstanceeviewcontrollerWithiIdentifier
,而不是initWithNibName
如果在故事板中使用单元原型,则根本不需要使用didSelectRowAtIndexPath
方法,只需将单元原型中的一个片段添加到下一个场景即可。然后编写一个prepareforsgue
方法,将uniqueId
传递到下一个场景
prepareForSegue
可能看起来像:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"DetailsSegue"])
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
FailedBankInfo *info = [_failedBankInfos objectAtIndex:indexPath.row];
[(FailedBanksDetailViewController *)segue.destinationViewController setUniqueId:info.uniqueId];
}
}
显然,将DetailsSegue
替换为您为segue的故事板id提供的任何名称
有两种选择:
您可以为要转换到的场景提供一个“情节提要id”(在Interface Builder中执行此操作),然后使用InstanceeviewcontrollerWithiIdentifier
,而不是initWithNibName
如果在故事板中使用单元原型,则根本不需要使用didSelectRowAtIndexPath
方法,只需将单元原型中的一个片段添加到下一个场景即可。然后编写一个prepareforsgue
方法,将uniqueId
传递到下一个场景
prepareForSegue
可能看起来像:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"DetailsSegue"])
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
FailedBankInfo *info = [_failedBankInfos objectAtIndex:indexPath.row];
[(FailedBanksDetailViewController *)segue.destinationViewController setUniqueId:info.uniqueId];
}
}
显然,将DetailsSegue
替换为您为segue的故事板id提供的任何名称
当前,您正在使用用于NIB和情节提要的代码。选择1并坚持它。如果使用序列图像板,只需执行该步骤,然后处理prepareforsgue:sender:
以配置目标视图控制器。当前正在使用用于NIB和序列图像板的代码。选择1并坚持它。如果使用情节提要,只需执行以下步骤,然后处理prepareforsgue:sender:
以配置目标视图控制器。非常感谢!但是,当我输入代码时,在“locationViewController*”类型的对象上找不到错误属性“tableView”,有什么想法吗?当我尝试在viewcontroller顶部使用表视图时,会发生这种情况,如果helps@Thomasrocks如果您在该教程中继续学习,FailedBanksListViewController
是一个UITableViewController
子类,它为其提供了一个tableView
属性。我不知道这个locationViewController
类是什么。您是否刚刚将tableview添加到UIViewController
子类中?如果是,表视图的IBOutlet
是什么?只需将您的tableView的self.tableView
替换为IBOutlet
。我在视图顶部添加了一个表视图,因为我试图将其作为子视图合并到另一个应用程序中。我想我没有在桌子上加一个插座。我想我把自己弄糊涂了。我该怎么做?非常感谢您的回复非常感谢!但是,当我输入代码时,在“locationViewController*”类型的对象上找不到错误属性“tableView”,有什么想法吗?当我尝试在viewcontroller顶部使用表视图时,会发生这种情况,如果helps@Thomasrocks如果您在该教程中继续学习,FailedBanksListViewController
是一个UITableViewController
子类,它为其提供了一个tableView
属性。我不知道这个locationViewController
类是什么。您是否刚刚将tableview添加到UIViewController
子类中?如果是,表视图的IBOutlet
是什么?只需将您的tableView的self.tableView
替换为IBOutlet
。我在视图顶部添加了一个表视图,因为我试图将其作为子视图合并到另一个应用程序中。我想我没有在桌子上加一个插座。我想我把自己弄糊涂了。我该怎么做?非常感谢您的回复