iOS. Можно ли прервать переход к раскрутке с помощью кода внутри его метода действия раскрутки?

В моем методе действия по раскрутке для моего перехода по раскрутке я отправляю данные в удаленную базу данных, и она проверяет, была ли информация успешно сохранена в базе данных.

Я планирую, чтобы моя функция проверки возвращала 0 или 1 для успеха или неудачи, и я планирую использовать это как условие.

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

Я уже читал отмену ios segue, но я не знаю, что они имеют в виду, когда говорят переопределить в

-[UIViewController shouldPerformSegueWithIdentifier:sender:]

метод. Должен ли я просто создать свою собственную версию этого метода (см. ниже) и вызвать его внутри метода действия раскрутки и заставить его возвращать нет/да в зависимости от моего состояния? Я попытался переопределить метод с помощью:

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
    if (database verification fails) {
        return NO;
    }
    return YES;              
}

и я назвал это в своем методе действия раскрутки, однако это не отменило переход раскрутки.

Я делаю что-то неправильно, или есть другой способ прервать раскрутку внутри метода раскрутки?

Я новичок в iOS, поэтому извините, если вопрос покажется глупым. Спасибо за любую помощь!


person giant91    schedule 17.07.2013    source источник
comment
Ваша реализация shouldPerformSegueWithIdentifier выглядит нормально, но она принадлежит контроллеру, из которого вы переходите, а не методу действия.   -  person rdelmar    schedule 17.07.2013
comment
Спасибо @rdelmar, это сработало!   -  person giant91    schedule 27.07.2013


Ответы (1)


Вероятно, было бы лучше, если бы вы просто проверили результат своей базы данных, а затем выполнили переход. Первый сегмент кода, который вы разместили, не будет сильно изменен, но если вы уже создали и работает переход для раскрутки, то единственное, что вы должны добавить в свой код для проверки, будет примерно таким (скажем, ваш база данных возвращает YES, и вы делаете ее NSString с именем returnResult):

if ([returnResult isEqualToString:@"YES"])
{
    [self performSegueWithIdentifier:@"unwindSegueName" sender:self];

}
else
{
    //do whatever here if the value equals anything other than "YES"
}

Ваш оператор if будет варьироваться в зависимости от данных, которые вы получаете из базы данных, но вы все равно просто используете простое условие if.

К вашему сведению, публикация большего количества кода даст вам более полные ответы. Если бы вы опубликовали, как выглядят возвращаемые данные из базы данных, я мог бы показать вам, как их использовать.

person CaptJak    schedule 17.07.2013
comment
этот ответ не является первоначальной целью. Комментарий исходного поста от rdelmar верен - person elephant.lyh; 26.05.2015