推送到 navigationController 时 UITableViewController 静态单元格不出现
Posted
技术标签:
【中文标题】推送到 navigationController 时 UITableViewController 静态单元格不出现【英文标题】:UITableViewController static cells not appearing when pushed to navigationController 【发布时间】:2013-10-18 04:50:56 【问题描述】:我陷入了困境... 我创建了一个带有静态单元格的 UITableViewController(我删除了所有默认的 UITableView 方法)。每当我转到这个视图控制器时,静态单元格就会出现,但是当我将它推到导航控制器上时,静态单元格不会出现……知道为什么会这样吗?
这是我的代码:
//shows empty uitableviewcontroller
OthersUsersTableViewController *tvc = [[OthersUsersTableViewController alloc]init];
[self.navigationController pushViewController:tvc
animated:YES];
和
//works
[self performSegueWithIdentifier:@"toOtherUser" sender:self];
感谢您的帮助!
【问题讨论】:
【参考方案1】:如果您手动分配并初始化静态表视图,您的应用应该如何知道它正在引用故事板中的静态表视图?
在情节提要中为您的静态表视图提供一个标识符并像这样初始化它:
OthersUsersTableViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"staticTableView"];
您可以在右侧的菜单中设置您的标识符,您还可以在其中设置视图控制器的自定义类。该字段称为 Storyboard ID。
【讨论】:
这么说?我将如何为该视图控制器进行自定义初始化? 什么意思?只需将您的alloc init
替换为我提供的代码即可。然后将其推送到您的导航控制器上。【参考方案2】:
当您只是调用 [[UIViewController alloc] init] 时,您在情节提要上添加和配置的 UI 对象不会被调用或连接到您的视图控制器。
您应该通过情节提要本身来实例化视图控制器,方法是向您的视图控制器(在情节提要上)添加一个标识符并调用情节提要的 instantiateViewControllerWithIdentifier 方法。 您可以通过当前视图控制器的 storyboard 属性获取对您的 storyboard 的引用。
OthersUsersTableViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"identifier"];
【讨论】:
以上是关于推送到 navigationController 时 UITableViewController 静态单元格不出现的主要内容,如果未能解决你的问题,请参考以下文章
从模态视图内部推送到 iOS NavigationController
推送到 navigationController 时 UITableViewController 静态单元格不出现
将 navigationController 上的 viewController 推送到动画底部到顶部 iPhone SDK
如何将新的 UICollectionViewController 推送到单元格单元格内的 navigationController
将 DialogViewController 推送到 ViewController 到 NavigationController 堆栈会给出 2 页