2010-04-16 4 views
0

Это моя программаКак установить высоту ячейки прогаматически без использования файла nib?

- (void)viewDidLoad { 
    [super viewDidLoad]; 

// Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
    self.title = @"Library"; 
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStyleBordered target:self action:@selector(close:)]; 
    // self.tableView.rowHeight = 80; 
    } 

-(void)close:(id)sender 
{ 
// 
} 


- (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]; 

    UILabel *dateLabel = [[UILabel alloc]init]; 
    dateLabel.frame = CGRectMake(85.0f, 6.0f, 200.0f, 20.0f); 
    dateLabel.tag = tag1; 
    [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]; 
    cell.contentView.frame = CGRectMake(0.0f, 0.0f, 320.0f, 80.0f); 
    [cell.contentView addSubview:dateLabel]; 
    [dateLabel release]; 
} 

// Set up the cell... 
//[(UILabel *)[cell viewWithTag:tag1] setText:@"Date"]; 
cell.textLabel.text = @"Date"; 

return cell; 
} 

Я устанавливаю размер кадра ячейки в Tableview: но клетка только размер по умолчанию. Я имею в виду, что высота, которую я установил, составляла 80, но она не была установлена ​​как 80 высоты. Как я могу это сделать.

Спасибо

ответ

1

Используйте self.tableView.rowHeight = 80.0;, или если это не работает (в зависимости от настройки таблицы), используйте метод -[UITableViewDelegate tableView:heightForRowAtIndexPath:], если вам нужны разные высоты строк для разных ячеек.

например. поместите это в любой объект - ваш UITableViewDelegate (вероятно, тот же файл, что и выше).

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (someConditionBasedOnIndexPath) return 60.0; 
    return 80.0; 
} 
+0

Спасибо. Это сработало. Я использовал - [UITableViewDelegate tableView: heightForRowAtIndexPath:] –

1

tableView:cellForRowAtIndexPath: только вызывается, если tableView:numberOfRowsInSection: возвращает положительное значение. Ваш код выглядит отлично, хотя вам не нужно устанавливать кадр contentView.

+0

Мне нужно добавить изображение и 6 меток в каждую ячейку. Итак, я использую установленный кадр. Спасибо. –

+0

Я думаю, что кадры cell и contentView оба автоматически сортируются по представлению таблицы на основе ширины строки и таблицы. – drawnonward