Используя CustomCell для tableView, как я могу вызвать didSelectRowAtIndexPath? - PullRequest
2 голосов
/ 15 июля 2011

Я заполняю UITableView CustomCells и пытаюсь вызвать didSelectRowAtIndexPath.Вот заголовок для пользовательской ячейки.

#import <UIKit/UIKit.h>

@interface CustomCell : UITableViewCell {
    IBOutlet    UILabel         *bizNameLabel;
    IBOutlet    UILabel         *addressLabel;
    IBOutlet    UILabel         *mileageLabel;
    IBOutlet    UIImageView     *bizImage;
}

@property (nonatomic, retain) UILabel     *bizNameLabel;
@property (nonatomic, retain) UILabel     *addressLabel;
@property (nonatomic, retain) UILabel     *mileageLabel;
@property (nonatomic, retain) UIImageView *bizImage;
@end

Довольно просто и понятно.У меня есть detailDisclosureButton, который я также добавляю в ячейку в методе cellForRowAtIndexPath и в ячейке, и вызывается метод accessoryButtonTappedForRowWithIndexPath:, но didSelectRowAtIndexPath нет.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"CustomCell";

    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) 
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCellView" 
                                                     owner:self options:nil];

#ifdef __IPHONE_2_1
        cell = (CustomCell *)[nib objectAtIndex:0];
#else
        cell = (CustomCell *)[nib objectAtIndex:1];
#endif
    }

    // Configure the cell.
    NSDictionary *dict = [rows objectAtIndex: indexPath.row];

        /*
          CODE TO POPULATE INFORMATION IN CUSTOM CELLS HERE
       */

#ifdef __IPHONE_3_0
    cell.accessoryType =  UITableViewCellAccessoryDetailDisclosureButton;
#endif

    return cell;
}

Я положилNSLog внутри всех методов, а также точек останова.Метода, который я пытаюсь вызвать, нет, но внутри моего класса CustomCell используется следующий метод.Так есть ли способ получить didSelectRowAtIndexPath для вызова при использовании CustomCell?

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 

Ответы [ 4 ]

1 голос
/ 15 июля 2011

Пользовательские ячейки или нет не должны иметь никакого значения. Вы в режиме редактирования? Если да, вы должны установить allowsSelectionDuringEditing = true для tableView.

0 голосов
/ 01 декабря 2012

проверьте, установлен ли у вас UITapGestureRecognizer для родительского представления myTableView. Возможно, это связано с обработкой события касания и его потреблением.

0 голосов
/ 15 июля 2011

Поскольку вы говорите, что вызывается tableView:accessoryButtonTappedForRowWithIndexPath:, мы знаем, что свойство делегата вашего tableView установлено правильно. Так что tableView:didSelectRowAtIndexPath: также должны быть вызваны. Если он не вызывается, я думаю, у вас есть опечатка где-то в сигнатуре метода. Скопируйте и вставьте подпись этого метода в свой код, чтобы убедиться, что вы случайно не пропустили часть «tableView:» и не сделали ошибку в заглавных буквах.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

РЕДАКТИРОВАТЬ: Вторичная гипотеза: в .xib, где вы определили свою пользовательскую ячейку, убедитесь, что установлен флажок «Взаимодействие с пользователем».

0 голосов
/ 15 июля 2011

если вы используете Tableview в своей xib..то вы хотите указать источник данных tableview и делегировать соединение в владельце файла ..

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