【问题标题】:Can I create a UITableViewController that inherits from a custom subclass of UIViewController?我可以创建一个继承自 UIViewController 的自定义子类的 UITableViewController 吗?
【发布时间】:2011-02-09 05:50:53
【问题描述】:

我需要从应用程序的所有屏幕访问的常用功能:右栏按钮项和相关操作。

为了不重复代码,我想在自定义 UIViewController 中进行设置,并让我的所有视图控制器都继承自它。

- (void)viewDidLoad {
    UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(lightsCamera)];
    self.navigationItem.rightBarButtonItem = rightBarButton;
}

- (void)lightsCamera {
    …
}

不过,我有许多 UITableViewController,我想知道它们是否也可以继承这些功能?

【问题讨论】:

    标签: iphone objective-c cocoa-touch uiviewcontroller uitableview


    【解决方案1】:

    如果您不向视图控制器添加任何新属性,则可以在 UIViewController 上的一个类别中实现这两个方法,默认情况下所有子类都会继承它。

    【讨论】:

    • 您是指视图上的类别还是视图控制器上的类别?我可以从视图中访问视图控制器的navigationItem 吗?
    • 我想他的意思是说 UIViewController。这就是该功能所属的地方。无需涉及 UIView。
    【解决方案2】:

    从您的自定义 UIViewController 子类重新创建您自己的 UITableViewController 相当简单。

    控制器必须具有UITableView 属性,该属性也设置为其view 属性,设置适当的调整大小掩码,将自己设置为表的委托和数据源,并记住在-viewDidAppear: 中闪烁滚动条指示器而你或多或少已经明白了。

    更多here.

    【讨论】:

    • 你知道这是否是实现我正在寻找的唯一方法吗?如果是这样,我会放弃UITableViewController,按照你的建议自己制作。
    • 在类别中覆盖方法不是一个好主意,因此这可能是您最好的选择。或者,您可以只继承 UITableViewController 并在那里添加您的功能,然后让其余的自定义表格控制器继承自它。
    • 这正是我一直在寻找的答案 :) 你成就了我的一天!
    • 任何人都应该使用 UITableViewController 的唯一时间是他们想要使用仅在 UITableViewController 中支持的静态单元格......我不相信这个解决方案可以解决这个事实。跨度>
    猜你喜欢
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多