IBAction от UIButton внутри UITableViewCell - PullRequest
2 голосов
/ 27 августа 2010

Я создал UITableViewCell в Интерфейсном Разработчике, к которому я добавил UIImageView и UIButton.Я дал UIButton выход и подключил его к IBAction с набором событий для подкраски.Я предполагал, что вызовет этот метод, так как все выглядит так, как будто он подключен:

- (IBAction)pressedCheckbox:(id)sender {
    [sender setBackgroundImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];
    NSLog(@"clicked check");

}

Проверяя вкладку соединений, у меня все настроено правильно, розетка и действие.И я не получаю ошибок, но при предварительном просмотре приложения нажатие на эту кнопку внутри UITableViewCell ничего не делает, и я ничего не вижу в журналах.

Идеи о том, почему он не позволяет мне нажимать на мойкнопка, которая находится в UITableViewCell?

РЕДАКТИРОВАТЬ:

Код для cellForRowAtIndexPath:

- (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];
        cell.editingAccessoryType = UITableViewCellAccessoryDisclosureIndicator;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }

    if (indexPath.section == 0) {
        switch (indexPath.row) {
            case 0:
                cell = topCell;
                break;
            case 1: 
                cell = cell1;
                break;
        }//end switch

    }//end if

    return cell;
}

Ответы [ 3 ]

1 голос
/ 27 августа 2010

Я также понял, в чем проблема.Мне нужно было установить разные высоты для ячеек, и я использовал:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

     if (indexPath.section == 0) {

          switch (indexPath.row) {

               case 0:

                    return 26;

                    break;

          }//end switch

     }//end if

     return tableView.rowHeight; <-- I just added this and it fixed the issue

}

Раньше я только возвращал значение для ячейки 0, поэтому это вызывало проблемы со всеми моими другими ячейками

0 голосов
/ 27 августа 2010

Вы имеете в виду, что это подкласс UITableViewCell, верно? Вы уверены, что используете это вместо обычного UITableViewCell?

Перейдите к реализации cellForRowAtIndexPath метода и найдите строку, в которой вы создаете экземпляр ячейки. Убедитесь, что он создает его для того, что называется вашим подклассом, а не UITableViewCell. Если вы не уверены, опубликуйте код для вашего codeForRowAtIndexPath метода, чтобы мы могли его увидеть.

0 голосов
/ 27 августа 2010

Вы делаете это в IB?Возможно, стоит попробовать - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents (в методе loadView контроллера-владельца), чтобы увидеть, связана ли проблема с IB.

...