2010-05-14 2 views
2

Маленький фон, вид на стол заполнен элементом fetchedResultsController, который заполняет представление таблицы строками. Теперь я пытаюсь добавить кнопку рядом с каждой строкой в ​​каждой ячейке tableview. До сих пор я пытался создать кнопку в моем методе configureCell: atIndexPath, а затем добавить эту кнопку в качестве подчиненного представления содержимого ячейки таблицы, но по какой-то причине кнопки не отображаются. Ниже приведен соответствующий код. Если кто-то хочет добавить больше кода, просто спросите, и я положу все, что захочу. Любая помощь приветствуется.Вопрос iPhone: Как добавить кнопку в ячейку tableview?

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath { 

// get object that has the string that will be put in the table cell 
Task *task = [fetchedResultsController objectAtIndexPath:indexPath]; 

//make button 
UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain]; 
[button setTitle:@"Check" forState:UIControlStateNormal]; 
[button setTitle:@"Checked" forState:UIControlStateHighlighted]; 

//set the table cell text equal to the object's property 
cell.textLabel.text = [task taskName]; 

//addbutton as a subview 
[cell.contentView addSubview:button]; 
} 

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

static NSString *CellIdentifier = @"Cell"; 

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

// Configure the cell. 
[self configureCell:cell atIndexPath:indexPath]; 
    return cell; 
} 

ответ

2

Три комментарии:

  1. Вы, вероятно, нужно установить рамку вашего UIButton. В противном случае он не знает, насколько большой он должен быть и где он должен быть помещен. Возможно, он поставляется с фреймом по умолчанию, но я этого не исследовал.
  2. Вы пропускаете свои кнопки. Вам не нужно retain после звонка [UIButton buttonWithType:...];
  3. У вас есть возможность добавить несколько кнопок в одну и ту же ячейку. Если вы повторно используете ячейку, тогда вы должны сначала вызвать removeFromSuperview каждый подзаголовок cell.contentView.
+0

Спасибо за ответ, я изменил кнопку [UIButton buttonWithType] на CGRect buttonFrame = CGRectMake (0, 0, 40, 40); UIButton * button = [[UIButton alloc] initWithFrame: buttonFrame]; , но ничего не появляется. Вы думаете, что это может быть затенено чем-то? Редактировать: Он скрыт, я вижу текст под другим текстом String. Теперь мне просто нужно его переместить. Большое спасибо за помощь. – Jake

+0

'+ buttonWithType:' является правильным инициализатором для 'UIButtons'. Вам просто нужно сделать что-то вроде: '[button setFrame: CGRectMake (0,0,40,40)];' впоследствии –

Смежные вопросы