Использование UITableViewCell в UITableView - PullRequest
0 голосов
/ 23 ноября 2011

Я немного смущен чем-то.Я пытаюсь создать пользовательскую ячейку и хочу использовать способ построения интерфейса.

Обычный способ создания таблицы - иметь таблицу:

.h

@interface AssessList : UIViewController {

    IBOutlet UITableView *tblAssessList;
}

@property(nonatomic, retain) UITableView *tblAssessList;

@end

.m

- (NSInteger)
numberOfSectionsInTableView:(UITableView *)tableView {
    return groupArray.count;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
     return totalArray.count;
}


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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }



    cell.textLabel.text = @"I am the text....";

        return cell;
}

Теперь яЯ создал новый класс для ячейки, и я думаю, что понимаю, как это вставить. Но могу ли я оставить .h как

@interface AssessList : UIViewController

или сделать класс / nib с полной таблицей должен быть UITableViewController?

Том

Ответы [ 6 ]

5 голосов
/ 23 ноября 2011

должен ли класс / перо с полной таблицей быть UITableViewController?

Нет.UITableViewController - это просто вспомогательный подкласс UIViewController, который имеет UITableView и уже настроен как источник делегатов / данных (он объявлен как соответствующий протоколам UITableViewDelegate и UITableViewDatasource), он также имеет предварительныйзаполненные реализации методов для этих протоколов в файле реализации шаблона, который Xcode генерирует для вас.Вы также можете делать все это самостоятельно, я часто делаю.

Однако вы должны создать IBOutlet для вашего UITableViewCell, чтобы вы могли загрузить его из файла пера (см. Загрузка пользовательских ячеек табличного представления из файлов пера в Руководстве по программированию табличного представления).

1 голос
/ 23 ноября 2011

Вы можете использовать этот пример кода, чтобы услышать.

http://ijoshsmith.com/2011/07/16/creating-a-custom-uitableviewcell-in-ios-4/

или Вы также можете использовать эту ссылку

http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html
1 голос
/ 23 ноября 2011

Если вы хотите сделать это через Interface Builder Way, то создайте xib (см. Xib).Перетащите объект UITableViewCell из палитры obj.Настройте его, как вы хотите.В tableView: cellForRowAtIndexPath: метод сделайте это:

UITableViewCell * aCell = [tableview dequeueReusableCellWithIdentifier:@"SomeIdentifier"];
if (aCell == nil)
{


    NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"CustomCellNibName" owner:self options:nil];

    for (NSObject *anObj in arr) {

        if([anObj isKindOfClass:[UITableViewCell class]]) {

            aCell = (UITableViewCell *)anObj;

        }
    }
}

Идентификатор для ячеек таблицы можно установить в IB.

0 голосов
/ 23 ноября 2011

В классеvaluList вы используете пользовательскую ячейку, созданную в otherviewController (подкласс UITableViewCell), поэтому нет необходимости изменять эту строку

@ interface AssessList: UIViewController

Примечание: - otherviewController должен быть подклассом UITableViewCell

0 голосов
/ 23 ноября 2011

Если вам нужна пользовательская ячейка табличного представления, вам также понадобится подкласс UITableViewCell.

Учебное пособие можно найти в этом блоге

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

0 голосов
/ 23 ноября 2011

Я думаю, это должен быть подкласс UItableViewCell

т.е.

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