UITableViewCell subclassed - фон для конкретной позиции - PullRequest
1 голос
/ 19 июля 2010

Я только что создал подкласс uitableviewcell и использовал его в моем cellforrowatindexpath.

после добавления простого uilabel моя ячейка выглядит примерно так: alt text

Моя цель состоит в том, чтобы оформить ячейку как

alt text

а как это сделать? во-первых, я просто добавляю uiimageview и отправляю его обратно с закругленными углами и стрелкой в ​​нем.

но на самом деле это три разных типа клеток. один для верхней части, один для средней части, один для нижней части секции.

есть какие-нибудь советы, как обрабатывать эти три "пользовательских" ячейки в одном подклассе uitableviewcell? спасибо за все советы!

Choise

// если что-то неясно, оставьте комментарий! ;)

Ответы [ 3 ]

1 голос
/ 21 июля 2010

хорошо, теперь я понимаю, что вы хотите изменить дизайн табличного представления.Я сделал пример приложения: Скачать (mediafire.com 55kb)

Здесь код:

#define numberOfRows 5

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 2;
}

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section {
    return numberOfRows;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == 0)
        return 42;
    else
        return 41;
}

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *kCustomCellID = @"CustomCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCustomCellID];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCustomCellID] autorelease];

        UIImage *theIMG;
        if (indexPath.row == 0) // you have to make a fourth image if only one cell exist
            theIMG = [UIImage imageNamed:@"1.png"];
        else if (indexPath.row == numberOfRows -1) // the last cell
            theIMG = [UIImage imageNamed:@"3.png"];
        else
            theIMG = [UIImage imageNamed:@"2.png"];

        UIImageView *mg = [[UIImageView alloc]initWithImage:theIMG];
        cell.backgroundView = mg;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }
    // check out how large your image should be if the table is not over the full screen
    //NSLog(@"Row:%i Width:%f", indexPath.row, cell.backgroundView.frame.size.width);

    cell.backgroundColor = [UIColor clearColor];
    cell.textLabel.text = @"TEXT";
    return cell;
}
0 голосов
/ 19 июля 2010

вы можете использовать слой для редактирования определенного UI-элемента. (по умолчанию TableView, без группировки)

myTable.layer.cornerRadius = 7.0;
myTable.layer.borderWidth = 1;
myTable.backgroundColor = [UIColor colorWithRed:0.89 green:0.89 blue:0.89 alpha:1.0];

Для того, чтобы .layer заработал, вам нужно #import <QuartzCore/CAAnimation.h>, а также связать QuarzCore.framework (Project Target -> General -> Add) - кнопка)

Для стрелки вы должны использовать изображение и заменить кнопку раскрытия по умолчанию. У меня нет времени, чтобы сделать все остальное, но я уверен, что вы спросите снова, если что-то не так;)

0 голосов
/ 19 июля 2010

Использование CustomCell может решить вашу проблему. Узнайте, как добавить UILabel и UIImage в ячейку.

http://iphone.zcentric.com/2008/08/26/uiimageview-in-a-custom-cell/

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