gpt4 book ai didi

ios - 为 objective-c 中的不同 View Controller 提供通用功能

转载 作者:行者123 更新时间:2023-11-28 21:41:13 24 4
gpt4 key购买 nike

我有很多 viewcontrollers,它们需要一些与导航相关的通用功能。

早些时候我创建了一个基类 BaseViewController(扩展 UIViewController),它具有所有通用功能(比如在 viewDidLoad 上执行一些任务等)和我所有的 viewcontrollers 都扩展了 BaseViewController

问题是我的一些 viewcontroller 应该是 UIViewController 和一些 UITableViewController 的子类,所以我不能使用上面的方法。

一种方法是为两者编写基类并复制代码。在不重复代码的情况下,有没有更好的方法。

最佳答案

虽然您可以通过使用委托(delegate)或辅助对象来解决这个问题,但我会提出不使用 UITableViewController 的情况。它只是 UIViewController 之上的一个非常轻的子类,提供一个 TableView ,符合委托(delegate)和数据源协议(protocol),并添加一两个属性用于选择和刷新。

虽然我通常不会建议重新创建框架已经为您完成的事情,但如果您只保留从公共(public)基类继承的所有内容并添加一个表,它可能(在您的情况下)使您的代码更容易理解查看其中一个子类。

如果您确实认为这是一个合理的方法,UITableViewController documentation overview 详细描述了这些行为的实现内容和实现位置,因此模仿其确切设置是微不足道的。

将 TableView 添加到 UIViewController

@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (nonatomic, strong) IBOutlet UITableView *tableView;
@end

在您的 Storyboard中,从对象库中拖出一个“ TableView ”并将其放在文档大纲中 View Controller 场景的“ View ”之上 - 这将替换 Root View UITableView.

然后把它连接起来:

  • ctrl - 从 View Controller 拖动到 TableView 以连接 viewtableView outlet
  • ctrl - 从 TableView 拖动到 View Controller 以设置 delegatedataSource 导出。

完成 - 不需要魔法。

关于ios - 为 objective-c 中的不同 View Controller 提供通用功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31970175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com