Подтвердить что ты не робот

Ios segue "отменить"

В зависимости от возврата XML я не хочу, чтобы текущий segue выполнялся при нажатии UIButton.

Я знаю, что могу выбрать, какой segue я хочу выполнить, но как сделать segue не? Или, по крайней мере, не выполнить любой из доступных segues?

4b9b3361

Ответ 1

Если целью развертывания является iOS 6.0 или новее, вы можете переопределить метод -[UIViewController shouldPerformSegueWithIdentifier:sender:], чтобы вернуть YES, если вы хотите выполнить segue и NO, если вы этого не сделаете.

Если ваша цель развертывания выше iOS 6.0, вы не получите сообщение shouldPerformSegueWithIdentifier:sender:. Поэтому в своем раскадровке не нарисуйте сегу от кнопки. Вместо этого нарисуйте segue из контроллера просмотра кнопок и дайте segue идентификатор. Подключите кнопку к IBAction в своем контроллере. В действии проверьте, хотите ли вы выполнить сеанс. Если вы хотите выполнить его, отправьте performSegueWithIdentifier:sender:, передав идентификатор, назначенный для выделения в раскадровке.

Ответ 2

Документация разработчика Apple имеет правильный способ отменить segue, который управляется в StoryBoard:

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender

Например:

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
    if ([identifier isEqualToString:@"listPopover"]) {
        if (self.listPopover == nil) {
            // Allow the popover segue
            return YES;
        }
        // Cancel the popover segue
        return NO;
    }
    // Allow all other segues
    return YES;
}

Ответ 3

Посмотрите эту тему: fooobar.com/info/30558/...

Вы можете просто проверить его в func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath)