UITableViewCell 不使用不推荐使用的方法 initWithFrame:reuseIdentifier

Posted

技术标签:

【中文标题】UITableViewCell 不使用不推荐使用的方法 initWithFrame:reuseIdentifier【英文标题】:UITableViewCell without using deprecated method initWithFrame:reuseIdentifier 【发布时间】:2010-05-11 23:21:47 【问题描述】:

我已阅读Loren's article 为 UITableViewCell 绘制您自己的内容。但是,他使用了一种已弃用的方法:initWithFrame:reuseIdentifier: 在 UITableViewCell 上已弃用。

如何在不使用initWithFrame:reuseIdentifier 的情况下让他的示例工作?

【问题讨论】:

【参考方案1】:

只需将initWithFrame:reuseIdentifier: 替换为以下内容。

- (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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

另一种具体的理解方式是- 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];

【讨论】:

当您这样做时,您可能会遇到单元格存在但不可见的问题... @AriBraginsky 你能详细说明你所说的问题和不可见的确切含义吗?

以上是关于UITableViewCell 不使用不推荐使用的方法 initWithFrame:reuseIdentifier的主要内容,如果未能解决你的问题,请参考以下文章

UITableviewcell 不显示 UICollectionView

UITableViewCell 使用自定义单元格滚动不平滑

选择时 UITableViewCell 高度不更新。使用 UITableViewAutomaticDimension

如何使用函数选择 UITableViewCell,而不点击它?

没有 Storyboard 的 Swift UITableViewCell 不使用自动布局

出队的 UITableViewCell 在滚动之前布局不正确(使用自动布局)