Добавление кнопки в UITableViewCell - PullRequest
1 голос
/ 12 сентября 2011

Я пытаюсь добавить кнопку в ячейку таблицы, как показано ниже:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
 ....
 UIButton* buttonCheckbox = [UIButton buttonWithType:UIButtonTypeCustom];
        buttonCheckbox.frame = CGRectMake(0, 177, 56, 26);
        buttonCheckbox.backgroundColor = [UIColor redColor];
        [buttonCheckbox addTarget:self action:@selector(actionFirst1) forControlEvents:UIControlEventTouchUpInside];


        [buttonCheckbox setTitle:@"MyTitle" forState:UIControlStateNormal];

        [cell addSubview:buttonCheckbox];

но событие actionFirst1 не вызывается. если я добавлю кнопку [self.view addSubview:buttonCheckbox] вместо [cell addSubview:buttonCheckbox], она будет работать нормально. почему?

спасибо ...

Ответы [ 3 ]

2 голосов
/ 12 сентября 2011

Вы должны добавить эту кнопку в свойство contentView вашей ячейки

[cell.contentView addSubview:buttonCheckbox];

Фактически все ваши пользовательские элементы внутри UITableViewCell должны быть помещены внутри contentView как элементы этой ячейки.(contentView, accessorView и image) размещены поверх любых элементов, которые есть в вашей ячейке.

Проверьте этот документ для получения дополнительной информации о ячейке о таможне UITableviewCell

1 голос
/ 09 апреля 2012

Пожалуйста, посмотрите, будет ли достаточно добавить вашу кнопку в качестве accessoryView ячейки таблицы.В этом случае платформа iOS поместит кнопку в нужном месте для вашего стиля ячейки (хотя вам все равно нужно указать его размер).Вот пример из одного из моих проектов:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
myButton.frame = CGRectMake(0, 0, 100, 27);  // only size matters
[myButton setTitle:@"Connect" forState:UIControlStateNormal];
[myButton addTarget:self action:@selector(connect:) forControlEvents:UIControlEventTouchUpInside];
cell.accessoryView = myButton;

Вот и все.Вы просто создаете элемент управления, убедитесь, что он имеет размер, и установите его для accessoryView.

1 голос
/ 12 сентября 2011

Привет, попробуйте ниже код, это может помочь вам:

if ([indexPath row] == 0) 
    {
                  UIButton *myButton = [[UISwitch alloc]initWithFrame:CGRectMake(x, y, width, 
                                        heigth)];
        [cell addSubview:myButton];
        cell.accessoryView = myButton;
        [myButton addTarget:self action:@selector (actionFirst1) 
                                  forControlEvents:UIControlEventTouchUpInside];
           }

Этот код поможет вам. Пожалуйста, установите кадры в соответствии с вашей ячейкой TableView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...