-2

我在我的应用程序中多次需要相同类型的表视图控制器,并且想创建一个更通用的表视图控制器,我可以一遍又一遍地使用它。

这些表格视图控制器非常简单,只显示数组的内容,选中选定的表格视图单元格,并Done在工具栏中的按钮被点击后将选定的表格视图单元格的索引返回给调用视图控制器.

目前,我直接在 Storyboard 中创建这些表视图控制器中的每一个,并使用 segue 实例化它们。

是否可以仅在代码中执行此操作(不使用 Storyboard 或 xibs)?

将它们实例化并推送到导航控制器堆栈的最佳方法是什么(每个都将显示在视图控制器中)。

在此处输入图像描述

4

2 回答 2

1

是否可以仅在代码中执行此操作(不使用 Storyboard 或 xibs)?

是的。您可以在故事板或 .xib 文件中执行的任何操作,都可以在代码中执行:

MyViewController *vc = [[MyViewController alloc] initWithNibName:nil bundle:nil];

注意:视图控制器的默认行为是从与视图控制器的类同名的 .xib 加载其视图,当您传递nil.xib 名称时,MyViewController.xib例如上面的示例。因此,上面的行在代码中创建了视图控制器,但仍会从 .xib 加载视图。如果您还希望以编程方式创建视图,请覆盖-loadView.

于 2012-11-12T20:21:54.890 回答
1

在代码中执行此操作很简单。您可以像平常一样创建视图控制器类(扩展UITableViewController)。实现所有相同的表视图数据源和委托方法。所有这些都是一样的。

当您想使用表格视图控制器时,您只需执行以下操作:

MyTableViewController *vc = [[MyTableViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];

我会这样定义你的MyTableViewController init方法:

- (id)init {
    if ((self = [super initWithStyle:UITableViewStyleGrouped])) {
        // any other initialization
    }

    return self;
}

顺便说一句 - 我有一个包含 100 多个视图控制器的应用程序,我从未使用过界面构建​​器或故事板。都是代码。

于 2012-11-12T20:25:50.527 回答