0

在我的应用程序中,我想在“全屏”中显示一个表格,所以我创建了一个 UITableViewController 的子类。当我想显示表格时,我只是实例化它并使用pushViewController:animated:. 现在我决定我真的想将它显示为一个模式,所以我想给它一个带有“完成”按钮的导航栏。我相信这意味着我现在需要将其设为 UIViewController 子类而不是 UITableViewController 子类,因为它现在不仅仅是一个表。不过,我不确定这是否可以做到;我创建了一个 xib,但 Xcode 似乎不想让我使用那个 xib 在 .h 文件中创建 IBOutlets,所以我不认为这两者是“连接的”。

我以前遇到过这个问题,通过创建一个新的 UIViewController 子类和 xib 并将我需要的所有东西从 UITableViewController 子类的文件复制并粘贴到新的子类的文件中来解决它。我当时就知道,正如我现在所知道的那样,那是一个笨拙且令人不快的解决方案。有谁知道如何正确完成这样的事情?

另外,为了避免将来出现这个问题,我是否应该永远不要在未来制作这样的顶级视图,而只是确保我使用pushViewController:animated:presentModalViewController:animated:使用的所有东西都是 UIViewController 子类?或者做我一直在做的事情安全吗?

4

1 回答 1

1

您在问题中提到的几件事表明存在一些误解。首先,如果你正在推动你的表格视图控制器,那么它必须嵌入到导航控制器中,因此会有一个导航栏——你可以在这个栏上添加一个完成按钮,如果这就是你想要的全部改变。无需重构您的代码。

如果你想使用 UIViewController 而不是表格视图控制器,你应该能够连接你的 nib。您是否将 nib 中文件所有者的类更改为 UIViewController 类?完成此操作后,您应该能够连接插座。

将代码从表视图控制器复制和粘贴到视图控制器中并没有什么“hacky”。我一直这样做,而不是写出所有这些文件。

我不确定你在最后一个问题中问的是什么。如何在屏幕上显示表格视图(推送或呈现)与您显示的是表格视图控制器还是视图控制器无关。您应该使用最适合您需求的一种。

于 2013-01-30T17:11:25.497 回答