Копирование UITableViewCell

Ты почти у цели. Проблема в том, что вы берете из стандартного ввода всегда строку. Давайте сделаем это целым числом

while True:
    selection = int(input("Input")) # this line
    if selection == 1:
        print(1)
    elif selection == 2:
        print(2)
    else:
        print("NO")
7
задан iDeveloper 5 April 2016 в 07:57
поделиться

3 ответа

Используйте клонирование клеток, встроенное в табличное представление. Apple знала, что генерация большого количества ячеек таблицы была медленной. Проверьте документы для этого метода:

- (UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier

Вы создаете ячейку однажды, затем поскольку новые ячейки требуют, используйте тот метод для клонирования существующих ячеек. Затем Вы просто изменяете, какие потребности быть измененным о новой ячейке и возвращают объект ячейки.

Также проверьте связанный с табличным представлением код кода, предоставленный Apple, которая использует этот метод, и покажите Вам правильный путь. Факт Ваша ячейка была загружена из пера, не должен иметь значения вообще.


Незначительное разъяснение: Я не думаю вышеупомянутые ячейки клона метода для Вас. Вместо этого это берет объект ячейки, которые прокрутили от экрана, и просто перемещает их в новое место. Таким образом, это буквально снова использует ячейку. Так убедитесь, что Ваше пользовательское табличное представление может быть установлено на все новые значения, в которых требуется за пределами инициализации.

6
ответ дан 6 December 2019 в 08:17
поделиться

Well, I'm not sure why all the tutorials out there doesn't specify this step.

When using your own custom UITableViewCell from Nib, calling dequeueReusableCellWithIdentifier is not enough. You have to specify the "Identifier" in the IB, just for for it in the Table View Cell tab section.

Then make sure the identifier you put in IB is the same as the identifier you use for the dequeueReusableCellWithIdentifier.

3
ответ дан 6 December 2019 в 08:17
поделиться

Не горжусь этим решением, но оно работает с максимальным количеством возможных привязок IB:

Интерфейс (AlbumTableViewCell является подклассом UITableViewCell, экземпляр которого определен в XIB-файле AlbumViewController) :

@interface AlbumsViewController : UITableViewController {
    IBOutlet AlbumTableViewCell *tableViewCellTrack;
}

@property (nonatomic, retain) AlbumTableViewCell *tableViewCellTrack;

Реализация (при разархивировании / архивировании создается копия / клонируется ячейка табличного представления):

@implementation AlbumsViewController

@synthesize tableViewCellTrack;

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    AlbumTableViewCell *cell = (AlbumTableViewCell *)[tableView dequeueReusableCellWithIdentifier: @"AlbumCell"];

    if (cell == nil) {
        AlbumsViewController *albumsViewController = [[[AlbumsViewController alloc] init] autorelease];
        [[NSBundle mainBundle] loadNibNamed: @"AlbumsViewController" owner: albumsViewController options: nil];

        cell = albumsViewController.tableViewCellTrack;
    }

    cell.labelTitle.text = ...;
    cell.labelArtist.text = ...;

    return cell;
}
4
ответ дан 6 December 2019 в 08:17
поделиться