我的故事板设置如下:
- 定义为自定义类的视图,我们称之为
V1ViewController
- 这个视图有一个视图容器
- 视图容器有一个
UITableViewController
带有一组静态单元格 - 单元格的样式为“Left Detail”
我正在尝试从 中的代码访问左侧详细信息中的文本框V1ViewController
,但似乎无法弄清楚如何遍历该层次结构。任何帮助,将不胜感激。
我的故事板设置如下:
V1ViewController
UITableViewController
带有一组静态单元格我正在尝试从 中的代码访问左侧详细信息中的文本框V1ViewController
,但似乎无法弄清楚如何遍历该层次结构。任何帮助,将不胜感激。
这是获取子视图控制器引用的正确方法:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString: @"childViewControllerSegue"]) {
ChildViewController *myChildViewController = (ChildViewController *) [segue destinationViewController];
//With myChildViewController you can access your child view controller for example:
[myChildViewController.myTableView reloadData];
}
}
请记住,因为这是一个容器视图,所以将在加载您的ViewController
. 因此,最好将其保存myChildViewController
为属性或实例变量以供以后使用。
我将不同意大多数其他响应者的观点。我强烈建议不要尝试操纵子视图控制器的表格视图(或任何它的视图内容。)
您应该将视图控制器的视图层次结构视为私有的。
相反,我会在您的 prepareForSegue 方法中保存一个指向子视图控制器的指针(如 sha 的帖子所示)。
使您的子视图控制器成为 UITableViewController 的自定义子类,其方法可让您为静态单元格的左视图指定新内容。
然后,在父视图控制器中,当您想要更改表格视图中的某些内容时,使用保存的指向自定义表格视图控制器 (myChildViewController) 的指针来调用为您进行所需更改的方法。这很容易。
我在 github 上有一个示例应用程序,它说明了使用容器视图和静态表视图。我希望我的设计尽可能通用,因此我为孩子对父母和父母对孩子的通信定义了协议。
查看这个在容器视图中使用静态表视图的演示。
使用 tableviewcontroller 将您的容器视图移入垃圾箱。改用UITableView
. 您可以轻松地IBOutlet
在其上创建。或者你甚至可以继承你V1ViewController
的子类UITableViewController
(取决于应该在屏幕上显示的内容)。然后在您的V1ViewController
UITableViewDelegate
和UITableViewDataSource
所需的方法中实施。