如何从XIB文件加载自定义UITableViewCells?
问题很简单:如何加载自定义UITableViewCell
从XIB文件?这样做可以让您使用InterfaceBuilder来设计单元格。显然,由于内存管理问题,答案并不简单。这条线提到了这个问题,并提出了解决方案,但在NDA发布之前,缺乏代码。这是一个长螺纹这讨论了这个问题,但没有给出明确的答案。
下面是我使用过的一些代码:
static NSString *CellIdentifier = @"MyCellIdentifier";MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = (MyCell *)[nib objectAtIndex:0];}
若要使用此代码,请创建MyCell.m/.h,这是UITableViewCell
加上IBOutlets
你想要的组件。然后创建一个新的“空XIB”文件。在IB中打开XIB文件,添加UITableViewCell
对象,将其标识符设置为“MyCellIdentifier”,并将其类设置为MyCell并添加组件。最后,连接IBOutlets
到部件上。注意,我们没有在IB中设置文件的所有者。
其他方法主张设置文件所有者,并警告如果XIB未通过额外的工厂类加载,则会发生内存泄漏。我在“仪器/泄漏”下测试了上面的内容,没有发现内存泄漏。
那么,从XBS加载电池的标准方法是什么呢?我们设置了文件的所有者吗?我们需要工厂吗?如果是的话,工厂的代码是什么样子的?如果有多种解决方案,让我们澄清每一个方案的利弊.