Поместить UIButton внутри UITableView

#objective-c #cocoa-touch #ios #uitableview #uibutton

#objective-c #cocoa-touch #iOS #uitableview #uibutton

Вопрос:

Я пытаюсь поместить UIButton внутри UITableViewCell .

UITableView Также содержит ячейки, содержащие UILabels , и в ячейках нарисован градиентный фон. Проблема, которую я вижу, заключается в том, что my UIButton — это просто заполненная черная ячейка без текстового отображения, и изменение свойств цвета и цвета фона, похоже, ничего не делает.

Вот код, который я использую для создания кнопки:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"InAppViewController, doing this - width= %f", self.wdth);
    static NSString *ProductTableIdentifier = @"ProductTableIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ProductTableIdentifier];
    if (cell == nil)
    {
        if (self.wdth >= 700) {
            CGRect cellFrame = CGRectMake(0, 0, (self.wdth - 100), 40);
            cell = [[[UITableViewCell alloc] initWithFrame:cellFrame reuseIdentifier: ProductTableIdentifier] autorelease];

            // Set up some labels...

            CGRect seenValueRect = CGRectMake(self.wdth-320, 0, 100, 40);
            UIButton *seenValue = [UIButton buttonWithType:UIButtonTypeRoundedRect];
            [seenValue setBackgroundColor:[UIColor greenColor]];
            seenValue.tag = kSeenValueTag;
            seenValue.frame = seenValueRect;
            [seenValue setTitle:@"I'm a clone" forState:UIControlStateNormal];

            [cell.contentView addSubview:seenValue];

            [seenValue release];

            // Continue setting up cell...
  

Ссылка pastebin содержит код для всей cellForRowAtIndexPath() функции (для UITableView рассматриваемой).

http://pastebin.com/bpEyfruE

Комментарии:

1. Взгляните на раздел Настройки ячеек в UITableView документации iOS: developer.apple.com/library/ios/#documentation/userexperience /…

Ответ №1:

Возможно, проблема в том, что вы выпускаете UIButton, инициализированный с помощью инициализатора удобства [UIButton buttonWithType:(UIButtonType)] . Попробуйте удалить [button release]

Ответ №2:

Не может быть даже того, что вам нужно сделать [cell addSubview:seenValue]; вместо [cell.contentView addSubview:seenValue];

Вы также могли бы попробовать сделать CGRectMake(110, 11, 185, 30) вместо CGRectMake(self.wdth-320, 0, 100, 40) : я использую это, и это работает хорошо, но я не знаю, то ли это, что вам нужно