пользовательский UITableViewCellStyle - PullRequest
0 голосов
/ 19 ноября 2011

Я хочу создать пользовательский стиль uitableviewcell, чтобы комментировать в моем приложении. Я хочу uitableviewcell с текстом комментария, количеством лайков, именем автора, датой и т.д ... У тебя есть идеи? Я создал метод, но я не знаю, как это реализовать. Мой код:

- (UITableViewCell *)getCommentTableCellWithTableView:(UITableView *)tableView commentText:(NSString *)commentText numberOfRows:(NSInteger)numberOfRows numberOfLikes:(NSString *)numberOfLikes date:(NSString *)date writer:(NSString *) writerName {
    static NSString *CellIdentifier = @"TitleCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];



    return cell;
}

Ответы [ 2 ]

3 голосов
/ 19 ноября 2011

Извините, я не могу найти учебник с четкими инструкциями, но вы можете искать некоторые похожие посты или вопросы на этом сайте.
Надеюсь, что простой код ниже может помочь вам.

Здесь также может помочь документ, не торопитесь, чтобы взглянуть ;)
http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/TableView_iPhone/TableViewCells/TableViewCells.html


Новый класс наследует от UITableViewCell,CustomCell.h:
(Советы: File -> New File -> Objective-C class -> задать имя класса и выбрать подкласс UITableViewCell)

@interface MapsListViewCell : UITableViewCell
{
    // Add iVars that you want.
}
// Some custom methods

CustomCell.m:

// ...
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
    }
    return self;
}
// ...
// Some custom methods
- (void)setAuthorName:(NSString *)name
{
    // ...
}

TableViewController.m:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[CategoriesListViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    CategoriesListViewCell * customCell = (CategoriesListViewCell *)cell;
    // Set your data:
    [customCell setAuthorName:@"God"];
    // ...etc.

    return cell;
}
0 голосов
/ 20 июля 2015

Для тех из нас, кто использует более новую версию (iOS 6 и выше) UITableView API для удаления из очереди ячеек, а именно dequeueReusableCellWithIdentifier:forIndexPath это фактически гарантированно возвращает инстанцированную ячейку, поэтому мы не можем выполнить проверку nil и вручную вызвать initWithStyle.Поэтому лучшим решением является создание подкласса UITableViewCell и принудительное применение стиля при инициализации.

Так, в качестве примера, если мы хотели бы иметь ячейку со стилем UITableViewCellStyleSubtitle, мы бы создали собственный подкласс:

@interface ABCSubtitledTableViewCell : UITableViewCell

@end

@implementation ABCSubtitledTableViewCell

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    return [super initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier];
}

@end

И тогда в нашем viewDidLoad мы зарегистрируем соответствующий класс

[tableView registerClass:[ABCSubtitledTableViewCell class] forCellReuseIdentifier:NSStringFromClass([ABCSubtitledTableViewCell class])];

Создание нашего метода dequeue:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ABCSubtitledTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([ABCSubtitledTableViewCell class]) forIndexPath:indexPath];
    cell.textLabel.numberOfLines = 0;
    cell.textLabel.text = @"Hello";
    cell.detailTextLabel.text = @"World";
    return cell;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...