UIButton в UIView в UITableView = не может нажать кнопку - PullRequest
1 голос
/ 15 октября 2010

Если я добавлю кнопку прямо, все будет хорошо. Я действительно хотел бы добавить это в представление и все еще быть в состоянии щелкнуть это. Вот код:

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

Ответы [ 3 ]

2 голосов
/ 02 декабря 2012

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

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return containerView.bounds.size.height;
}
1 голос
/ 15 октября 2010

Все отлично работает!В вашем 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!");
}
1 голос
/ 15 октября 2010

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

- (void)click:(id)sender;

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

...