子类化 UIViewController 实现 UITableView 委托和数据源:代码重用

Posted

技术标签:

【中文标题】子类化 UIViewController 实现 UITableView 委托和数据源:代码重用【英文标题】:Subclassing a UIViewController implementing UITableView delegate and datasource: code reuse 【发布时间】:2011-01-01 03:58:00 【问题描述】:

我在 viewDidLoadviewWillAppear: 方法中有一些初始化代码,这些代码用于我的多个 UIViewController 子类(实现 ):

-(void)viewDidLoad 
    [super viewDidLoad];
    self.tableView = [[UITableView alloc] initWithFrame:CGRectZero
        style:UITableViewStylePlain];
    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    [self.view addSubview:self.tableView];
    [self.tableView reloadData];


-(void)viewWillAppear:(BOOL)animated 
    [super viewWillAppear:animated];
    self.tableView.frame = self.view.bounds

我的想法是继承 UIViewController 并将这些方法包含在子类中,这样就不必在我的所有视图控制器中编写此代码。

您对此有何看法?我想知道这是否会导致保留 tableView 的问题。

干杯

【问题讨论】:

【参考方案1】:

您是否考虑过这种结构:

UIViewController -> your_First_Level_Subclass_View_Controller -> your_Second_Level_Subclass_View_Controller

在第一级,你实现了那些可重用/tableView 相关的代码,但你实际上并没有使用这个第一级控制器。然后,您将这个 1 级子类化以创建您的 2 级控制器,这是您将要使用的终极控制器。

【讨论】:

是的,这就是我的想法。我只是意识到应用程序将增长到类将从不同父视图控制器继承不同功能的大小,并且我不希望 a) 3、4、5、...、N 级别 b) 开始跨我的第一级视图控制器。所以我认为另一种方式会更好。

以上是关于子类化 UIViewController 实现 UITableView 委托和数据源:代码重用的主要内容,如果未能解决你的问题,请参考以下文章

CollectionViewController,我应该使用普通的 UIViewController 子类化或实现它的委托/数据源吗?

UIViewController 的 Swift 子类化子类

使用 UITableView 子类化 UIViewController

如何在许多子类中使用 UITableViewDelegate 子类化 UIViewController

子类化 UIView/UIViewController

动态子类化 UIViewController 的错误