2016-11-13 4 views
1

Я собираюсь на это какое-то время, и мне бы хотелось услышать некоторые потенциальные решения. По сути, я пытаюсь включить правильное меню/навигацию, используя SWRevealViewController, но когда я пытаюсь войти в приложение и перейти на мой домашний экран/войти в систему, приложение выйдет из строя. Приложение не сбой, когда segue является модальным и т. Д. но он продолжает сбой, пока он настроен на соответствующий segue для плагина, который я сейчас использую.Swift/Objective C - performTransitionOperation Crash

Вот выход консоли, когда приложение падает:

2016-11-12 22: 21: 04,861 Свободно Рынок [16811: 3049283] *** Нагрузочного приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: '- [Freely_Market.LoginViewController _performTransitionOperation: withViewController: анимированные]: непризнанные селектор направил к экземпляру 0x7fc71950ea30'

для тех, кто будет интересно, что интерфейс приложения выглядит - здесь:

User Interface Image

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

2 является переход, sw_front

3 вошедшего в экране

4 является переход sw_right

5 является меню

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

Вот где ошибка, или где она находится кодирование с: \

- (void)perform 
{ 
    SWRevealControllerOperation operation = SWRevealControllerOperationNone; 

    NSString *identifier = self.identifier; 
    SWRevealViewController *rvc = self.sourceViewController; 
    UIViewController *dvc = self.destinationViewController; 

    if ([identifier isEqualToString:SWSegueFrontIdentifier]) 
     operation = SWRevealControllerOperationReplaceFrontController; 

    else if ([identifier isEqualToString:SWSegueRearIdentifier]) 
     operation = SWRevealControllerOperationReplaceRearController; 

    else if ([identifier isEqualToString:SWSegueRightIdentifier]) 
     operation = SWRevealControllerOperationReplaceRightController; 

    if (operation != SWRevealControllerOperationNone) 
     [rvc _performTransitionOperation:operation withViewController:dvc animated:YES]; 
} 

Так от того, что я могу сказать, приложение думает, что он использует этот селектор: _performtransitionOperation:withViewController:animated:]

Но это, очевидно, не Swift, и Objective-C. Поэтому я не совсем уверен, как заставить мой segue фактически действовать так, как должно.

Здесь вызывается вызов после проверки информации о пользователе.

} else if (username.isEqual(to: usernameV!) && password.isEqual(to: passwordV!)) { 

     self.performSegue(withIdentifier: "sw_front", sender: self) 

И это где я застрял, может быть, это просто вопрос с Objective-C и Swift конфликтующих? Другие получили эту надстройку, чтобы работать нормально, без каких-либо проблем, но у меня ее нет. Может быть, это потому, что я проверяю информацию для входа в систему, а затем передаю ее на этот новый экран, где другие просто начинают с основного экрана.

Любая помощь приветствуется.

ответ

0

Вопрос был решен.

Мне нужно было создать отдельный контроллер представлений между подтверждением авторизации и экземплярами, где будет вызываться SWRevealViewController.

Если вы хотите прочитать в вопрос дальнейшего в хранилище Git для SWRevealViewController, вы можете сделать это здесь: SWRevealViewController Issue #642

вид образа того, что я говорю о том, можно найти здесь:

enter image description here