Многоразовый TableViewCell в Интерфейсном Разработчике С изменяемыми метками? - PullRequest
0 голосов
/ 29 августа 2011

Как сделать повторно используемую TableViewCell в Интерфейсном Разработчике со сменными метками?

Это вообще возможно? Из того, что я понимаю, Apple в последнее время очень любила пользовательский TableViewCell в Interface Builder, так что это должно быть возможно?

Ps. Я знаю, что в IB есть много вопросов с ответами о TableViewCell, но я не смог найти никого, кто бы заставлял работать ярлыки.

Ответы [ 2 ]

1 голос
/ 29 августа 2011

Вы можете изменить что-либо в ячейке, которая используется повторно. Чтобы настроить метки, которые вы создаете в IB, вы должны установить их теги в самой IB и выбрать метку, используя тот же тег.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    MyCell* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if(cell == nil)
    {
        cell = [[[MyCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }


    // Configure the cell.
    //Do anything here with the labels. Even add or remove them.
    (UILabel*) label1 = (UILabel*)[cell viewWithTag:1];
    return cell;
}

НТН,

Акшай

0 голосов
/ 14 мая 2015

Раньше я делал это так же, как в принятом ответе, но я всегда чувствовал, что использую теги, как я использую «перейти к» в Паскале. Чувствует себя грязным Но, может быть, это только я, теги работают просто отлично.

Хотя есть альтернативный способ. Создайте подкласс UITableViewCell, создайте свойство IBOutlet, подключитесь к IB и создайте ссылку на ваше свойство в cellForRowAtIndexPath: коде. Вот так:

interface MyCustomCell : UITableViewCell

@property (nonatomic, weak) IBOutlet UILabel *myAwesomeLabel;

@end

Не забудьте установить класс ячейки в MyCustomCell в IB.

enter image description here

После этого вы можете подключить свою собственность в IB напрямую, вот так

enter image description here

И в вашем источнике данных табличного представления теперь вы можете получить доступ к этому свойству

#import "MyCustomCell.h"


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"MyCell"];

    if (cell) {
        cell.myAwesomeLabel.text = @"Hello, World!";
    }

    return cell;

}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...