2016-03-26 4 views
-2

ВведениеSwift предотвратить раскадровки SEGUE от случаться

Я создаю Swift 2.0 приложение, в котором действие может быть выполнено только определенное количество раз, скажем 8. Для того чтобы добиться такого поведения, мне нужно отменить определенный сегмент, performAction, должен ли он быть вызван нажатием кнопки, связанной с ним на раскадровке.

Исследование

я натыкался на вопросы, как http://stackoverflow.com/questions/8066525/prevent-segue-in-prepareforsegue-method, который предложил подобный код:

override func shouldPerformSegueWithIdentifier(identifier: String,sender: AnyObject?) -> Bool { 

    return true 
} 

Реализация

Я реализовал это нравится:

override func shouldPerformSegueWithIdentifier(identifier: "createCard" ,sender: AnyObject?) -> Bool { 
    if amountOfTimes > 8 { //To be triggered if the segue should be cancelled 
     return false 
    } else { 
    return true 
    } 
} 

Однако я получаю ошибку

Прогнозный '' Seperator

Как я переход аннулируется должны amountOfTimes быть больше, чем 8?

ответ

1

Чтобы проверить, если ваш идентификатор "createdCard" использовать метод shouldPerformSegueWithIdentifier так:

override func shouldPerformSegueWithIdentifier(identifier: String ,sender: AnyObject?) -> Bool { 

    return !(identifier == "createCard" && amountOfTimes > 8) 

} 
+0

Спасибо! Попробуй, как только я снова за компьютером. – rocket101

+1

Вы должны предпочесть 'return! (Идентификатор ==" createCard "&& amountOfTimes> 8)' вместо ненужного 'if'. – Sulthan

+0

вы на 100% прав @Sulthan отредактирует ответ. Спасибо – ronatory

1

Проблема эта фраза:

identifier: "createCard" 

Это не Swift. Это не функция вызов, это функция реализация. Вы должны сказать:

identifier: String 

identifier не значение, которое вы установить, это значение, которое вы получить. Вы можете затем посмотреть, чтобы узнать, есть ли он "createCard", но вы не можете получить претензии что это.

+0

Спасибо! +1 .... – rocket101

Смежные вопросы