起初,我有這樣的代碼:細胞預裝
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
DropDownTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"DropDownTableViewCell"];
if (!cell) {
NSArray *topLevelObjects =
[[NSBundle mainBundle] loadNibNamed:@"DropDownView"
owner:self
options:nil];
for (DropDownTableViewCell *object in topLevelObjects) {
if ([object class] == [DropDownTableViewCell class]) {
cell = object;
break;
}
}
NSAssert(cell, @"Cell must not be nil");
}
cell.nameLabel.text = [self.dataSource buttonDownPicker:self stringForRowAtIndexPath:indexPath];
return cell;
}
在第一時刻,當我表現出的tableView和的tableView細胞的開始從筆尖加載我有UI凍結幾秒鐘(由加載每個顯示單元的筆尖)。這可以通過從早期的筆尖加載細胞來解決:
- (void)awakeFromNib {
DropDownTableViewCell *cell = [[[NSBundle mainBundle] loadNibNamed:@"DropDownView" owner:self options:nil] objectAtIndex:0];
}
但是這種方式看起來「哈克」。有更合適的解決方案嗎?
根據給出的答案編輯:
我試着使用registerNib forCellIdentifier但它並不會加載筆尖,它只是裝訂筆尖與標識,並在第一次時的tableView出現在所有細胞造成負荷筆尖到內存
我還沒有viewDidLoad,我的課是一個UIView子。創建冗餘的筆尖鏈接與創建冗餘單元相同。我想避免它 –