我正在编写一个抽象的UITableViewController类,我想在viewDidLoad
中写一些内容,如
if (self.tableView.contentType == UITableViewContentTypeStaticCells) {
// Do something when table view has static cells
} else {
// Do something when table view has dynamic prototypes
}
但显然UITableView上没有contentType
。有没有办法以编程方式确定tableView的故事板内容是静态的还是动态的?
答案 0 :(得分:1)
只是为了好奇:[tableViewController valueForKey: @"staticDataSource"]
会让你到那里,其中tableViewController是一个UITableViewController。
但是(!)这可能无法通过AppStore,并且可能会在没有警告的情况下中断,因为它不是已发布的API。
更新:似乎检查是否检查,如果
self == self.tableView.dataSource
虽然self是一个UITableViewController,它也会为你提供重新请求的结果。
答案 1 :(得分:0)
没有建立区分两者的方法,但如果你对你想要实现的目标更具体,我们或许可以建议其他方法来实现你的目标。
答案 2 :(得分:0)
我的解决方案假定抽象的UITableViewController类必须公开BOOL属性
@property (assign, nonatomic) BOOL staticCells;
此属性由具体类增值,数据源方法实现检查属性的存在条件,如下例所示:
- (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (!self.staticCells) {
...
}
else{
UITableViewCell* cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];
[cell layoutIfNeeded];
return cell;
}
}
我想你正在寻找一个系统框架属性(或委托方法)来检查静态行为,但这个解决方案可能对某人有用