Пользовательский UIButton для детализации из табличного представления? - PullRequest
0 голосов
/ 21 августа 2011

Я вставил пользовательский элемент «Back» UIBarButtonItem, созданный из изображения, которое я сделал в фотошопе.Мне удалось заставить его выглядеть просто отлично, моя проблема - заставить его работать.

Моя кнопка ничего не делает, я предполагаю, потому что я не назначил ей никаких действий.Я просто не знаю правильный синтаксис для этого?

Вот мой код

    UIImage *buttonImage = [UIImage imageNamed:@"BackButton.png"];
        UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
        [backButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
        backButton.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height);

// Im assuming this is where i need to put the action...
        //[backButton addTarget:self action:@selector(.......) forControlEvents:UIControlEventTouchUpInside];

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] 
                                                 initWithCustomView:backButton];

По сути, я хочу, чтобы моя новая настраиваемая кнопка работала так же, как по умолчанию в обычном UITableView

С уважением, Энди

1 Ответ

2 голосов
/ 21 августа 2011

Вы можете сделать это в IB или в коде, вызвав addTarget:action:forControlEvents: для UIControlEventTouchUpInside, чтобы вызвать метод (действие) при нажатии кнопки. Например:

[backButton addTarget:self action:@selector(backButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

Это задокументировано в Ссылка на класс UIControl , UIButton является подклассом UIControl.

Вам понадобится метод, который будет вызываться при возникновении события, который я назвал backButtonPressed: в своем коде выше. Этот метод принимает один параметр, объект, отправляющий событие, что-то вроде этого:

-(void)backButtonPressed:(id)sender
{
    // NOTE: assumes self is your UIViewController
    [self.navigationController popViewControllerAnimated:YES];
}
...