UITableViewCell不使用废弃的方法initWithFrame:reuseIdentifier

我已经阅读了Loren的文章 ,为UITableViewCell绘制自己的内容。 但是,他正在使用不推荐使用的方法: initWithFrame:reuseIdentifier:在UITableViewCell上已弃用。

你如何让他的例子工作,而不使用initWithFrame:reuseIdentifier

只需要将initWithFrame:reuseIdentifier:replace为以下内容即可。

 - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { // you might want to add the UIView to [self contentView] // so that in edit's the cell's content will be automatically adjusted. ABTableViewCellView *myUIView = [[ABTableViewCellView alloc] initWithFrame:CGRectZero]; myUIView.opaque = YES; contentViewForCell = myUIView; [self addSubview:myUIView]; [myUIView release]; } return self; } 

另外,苹果有一个例子,Loren指出,但他们使用initWithStyle:reuseIdentifier:

http://developer.apple.com/iphone/library/samplecode/TableViewSuite/Introduction/Intro.html

您可以参考此链接来查找弃用方法的替代方法。 应该很容易让代码与replace工作。 http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITableViewCell_Class/DeprecationAppendix/AppendixADeprecatedAPI.html

另一种是明确的方法是 – initWithFrame:reuseIdentifier:在iOS 3.0中已被弃用。 使用initWithStyle:reuseIdentifier :来代替

简单的例子 – 错误代码

 static NSString *MyIdentifier = @"MyIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease]; } 

预期的代码

 static NSString *MyIdentifier = @"MyIdentifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier]; }