UITableViewCell без использования устаревшего метода initWithFrame: reuseIdentifier - PullRequest
9 голосов
/ 12 мая 2010

Я прочитал статью Лорен о создании собственного контента для UITableViewCell. Однако он использует устаревший метод: initWithFrame:reuseIdentifier: устарел для UITableViewCell.

Как заставить его пример работать без использования initWithFrame:reuseIdentifier?

Ответы [ 3 ]

16 голосов
/ 12 мая 2010

просто пришлось заменить 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;
}

Кроме того, у Apple есть пример, на который указывает Лорен, но он использует initWithStyle:reuseIdentifier:

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

2 голосов
/ 12 мая 2010

Вы можете обратиться по этой ссылке, чтобы найти замену устаревшему методу. Должно быть довольно легко получить код, работающий с заменой. http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITableViewCell_Class/DeprecationAppendix/AppendixADeprecatedAPI.html

0 голосов
/ 23 октября 2012

Другой конкретный способ понять это - 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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...