Можно ли сделать uitableheader пропусками только над первой табличной ячейкой? - PullRequest
0 голосов
/ 27 апреля 2011

У меня есть простой uitableview с tableHeaderView. у меня есть более одного раздела.

я установил высоту заголовка в 30, но я хочу использовать в своем заголовке uiview высотой 40 пикселей (от 0,0 до 320,30 не прозрачно. От 30,10 до 320,40 прозрачно) я вставил картинку в нее. на точке есть маленькая иконка (0x30). его высота = 10. я просто хочу немного показать мой заголовок на первой табличной ячейке.

ниже вы увидите, что я устанавливаю высоту заголовка равной 30, но я создаю вид высоты 40 пикселей в viewForHeaderInSection.

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 30;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {


    UIView *sectionView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 40)];
    sectionView.backgroundColor = [UIColor redColor];
    [sectionView autorelease];
    return sectionView;

}

это возможно?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2011

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

Я создал новый пустой xib-файл и поместил UITableViewCell в этот файл.Я изменил высоту UITableViewCell на 54 и поместил UIView внутри UITableViewCell.Кадр вида 0,0,30,10.Затем я изменил владельца этого xib-файла на мой TableViewController.

@interface RootViewController : UITableViewController {

UITableViewCell * firstCellInSection;

}

@property (nonatomic, retain) IBOutlet UITableViewCell * firstCellInSection;
@end

После этого я подключил выход FirstCellInSection с моим UITableViewCell в xib-файле.

Затем я изменил код, который TableView загружает этот firstCell для всех ячеек с

indexPath.row == 0

Вот код:

@synthesize firstCellInSection;

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell * cell;
if (indexPath.row == 0) {
    if (indexPath.row == 0) {
        static NSString *firstCellInSectionIdentifier = @"FirstCellInSectionIdentifier";
        cell = [tableView dequeueReusableCellWithIdentifier:firstCellInSectionIdentifier];
        if (cell == nil) {
            [[NSBundle mainBundle] loadNibNamed:@"FirstCell" owner:self options:nil];
            cell = firstCellInSection;
            self.firstCellInSection = nil;
        }
    }

}

else {

    static NSString *CellIdentifier = @"Cell";

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

}



// Configure the cell.
return cell;
}

Пользовательская высота строки:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

if (indexPath.row == 0) return 54;

else return 44;
}

В сочетании с вашим кодом для headerView это может выглядеть так, как вы хотите.

0 голосов
/ 27 апреля 2011

Ваш раздел будет ограничен высотой заголовка. Даже если вы используете UIView высотой 1000 пикселей, он будет отображаться только в пределах, определенных высотой ячейки / заголовка таблицы.

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