2010-10-15 5 views
1

Если я добавлю кнопку прямо, все будет хорошо. Я бы очень хотел добавить его в представление и все еще иметь возможность щелкнуть его. Вот код:UIButton в UIView в UITableView = не может нажать кнопку

UIView *containerView = 
[[[UIView alloc] 
initWithFrame:CGRectMake(0, 0, 300, 60)] 
autorelease]; 
UIButton *footerButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
footerButton.frame = CGRectMake(10, 10, 300, 40); 
[footerButton addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside]; 
[containerView addSubview:footerButton]; 
+0

Как вы используете свой 'containerView'? Вы выполняете '[tableView addSubview: containerView]' или используете его в ячейке таблицы? Вы должны попытаться использовать UIButtonTypeRoundedRect и посмотреть, взаимодействует он или нет. – tia

+0

Я использую его в нижнем колонтитуле – gurghet

ответ

1

Все работает отлично! В вашем TableViewController выполните следующие действия:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIView *containerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 60)] autorelease]; 
    UIButton *footerButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    footerButton.frame = CGRectMake(10, 10, 300, 40); 
    [footerButton addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside]; 
    [containerView addSubview:footerButton]; 

    [footerButton setTitle:@"Touch me!" forState:UIControlStateNormal]; 
    containerView.backgroundColor = [UIColor colorWithWhite:0.5 alpha:0.5]; 
    self.tableView.tableFooterView = containerView; 
} 

- (void)click { 
    NSLog(@"I am here!"); 
} 
+0

Спасибо, но, к сожалению, я загружаю его в footerviewforsection: method – gurghet

1

Это @selector(click) выглядит немного странно. Я бы подумал, ваша функция нажмите хотел бы что-то вроде:

- (void)click:(id)sender; 

Если это то, что у вас есть, то вам нужно добавить двоеточие @selector(click:), чтобы сделать матч подписей.

+0

Я только что изменил код, чтобы сделать его кратким, это явно не так. – gurghet

2

Установили ли вы высоту нижнего колонтитула высотой представления, которое вы добавляете к нему? У меня была аналогичная проблема, когда я вернул UIView, содержащий UIButton в методе viewForFooterInSection. Высота нижнего колонтитула была недостаточно большой, пока я не обновил метод heightForFooterInSection. Например:

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 
{ 
    return containerView.bounds.size.height; 
} 
Смежные вопросы