gpt4 book ai didi

ios - 我们应该在 initializer 中添加 UITableView 还是在 iOS 中添加 layoutsubviews 方法?

转载 作者:行者123 更新时间:2023-11-28 22:40:06 25 4
gpt4 key购买 nike

我正在为我的应用设计自定义 UIView。

UIView 将包含以下组件:

  1. UISearchbar
  2. UITableView

我的初始化程序如下:

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {

_searchBar = [[UISearchBar alloc]initWithFrame:CGRectZero];
_tableView = [[UITableView alloc]initWithFrame:CGRectZero];
_tableView.dataSource = self;
[super addSubView:_searchBar];
[super addSubView:_tableView];
// Initialization code
}
return self;
}

我打算在 layoutsubviews 方法中设置 _searchBar 和 _tableView 的框架。

但我认为我将 _tableView 添加到 super 的方式是错误的。因为将 _tableView 添加到 subview 的那一刻,将触发 _tableView 的数据源方法。这甚至发生在创建自定义类本身之前。

这是一个正确的设计吗?

我可以按照下面的方式在 layoutSubviews 中单独添加 _tableView 吗?

-(void)layoutSubViews{

//Adjust frame
[_tableView removeFromSuperView];
[self addSubView:_tableView];

}

最佳答案

您不应该在 View 中分配 UITableViewDataSource。它应该在 ViewController 中分配。

你是对的。没有限制。但是你的问题是关于设计的。想象一下这样的事情:

@implementation CustomViewController

- (void)loadView {
customView = [[CustomView alloc] initWithFrame:CGRectZero];

customView.tableView.dataSource = self;
customView.tableView.delegate = self;
}

使用 ViewController,您可以控制何时初始化自定义 View 以及控制其 tableView 何时加载数据。虽然您当然可以将所有这些代码放入您的 customView 中,但您会遇到比您现在询问的问题更糟糕的问题。

关于ios - 我们应该在 initializer 中添加 UITableView 还是在 iOS 中添加 layoutsubviews 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14769415/

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