Пользовательская кнопка ячейки Tableview - PullRequest
0 голосов
/ 12 июля 2011

Я сделал таблицу с обычными ячейками.Ячейки включают метки и кнопку.Вопрос в том, как определить текст метки, когда нажата ее кнопка?

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {
    if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) {
    // Initialization code
        primaryLabel = [[UILabel alloc]init];
        primaryLabel.textAlignment = UITextAlignmentLeft;
        primaryLabel.font = [UIFont systemFontOfSize:11];
        primaryLabel.backgroundColor = [UIColor clearColor];
        secondaryLabel = [[UILabel alloc]init];
        secondaryLabel.textAlignment = UITextAlignmentLeft;
        secondaryLabel.font = [UIFont systemFontOfSize:9];
        secondaryLabel.backgroundColor = [UIColor clearColor];
        myImageView = [[UIImageView alloc]init];

        btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn.backgroundColor = [UIColor clearColor];

        [self.contentView addSubview:btn];
        [self.contentView addSubview:primaryLabel];
        [self.contentView addSubview:secondaryLabel];
        [self.contentView addSubview:myImageView];
    }

    return self;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{   
    static NSString *CellIdentifier = @"Cell";

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

    if (cell == nil) 
    {
        cell = [[[CustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }

    return cell;
}

1 Ответ

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

Метод, который вы ищете, - addTarget: action: forControlEvents:

Используя ваш пример, у вас есть UIButton, btn, и, скажем, у вас есть действие в пользовательской ячейке, называемое myAction.Код будет выглядеть следующим образом:

[btn addTarget:self action:myAction forControlEvents:UIControlEventTouchUpInside];

Поскольку myAction - это метод в вашей ячейке, вы можете легко получить доступ к свойству label.Если вам нужно поместить свое действие в другой контроллер:

[btn addTarget:otherController action:myAction forControlEvents:UIControlEventTouchUpInside];

В этом случае вам нужно будет сохранить ссылку на вашу ячейку в контроллере.Поскольку у вас, вероятно, имеется более одной ячейки, вы можете сохранить NSMutableArray в качестве свойства и добавлять свои ячейки при создании таблицы.

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