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]; }