推送到 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 页

如何将其他视图控制器推送到 NavigationController 但保留 TabBar?