2015-01-25 5 views
12

Когда нажата кнопка, я хочу выполнить переход между двумя контроллерами представления, используя стиль Modal Transition CoverVertical, а затем отпустите его. Там есть информация о том, как это сделать в объективе C, но не может найти никакой хорошей информации в Swift. До сих пор я сделал это, но я не думаю, что это правильно:Показать и отклонить контроллер модального вида в Swift

@IBAction func insertStatus(sender: UIButton) { 

     var StatusVC: StatusViewController = StatusViewController() 
    var modalStyle: UIModalTransitionStyle = UIModalTransitionStyle.CoverVertical 
    StatusVC.modalTransitionStyle = modalStyle 
    self.presentViewController(StatusVC, animated: true, completion: nil) 

    } 

Отклонить Я использую как и не работает либо:

@IBAction func statusSaved(sender: UIBarButtonItem) { 

     self.dismissViewControllerAnimated(false, completion: {() -> Void in 
      let usersVC: UsersViewController = self.storyboard?.instantiateViewControllerWithIdentifier("UsersViewController") as UsersViewController 
     }) 
    } 
+0

Вы пытались соединить два ViewControllers с помощью раскадровки ?? –

+0

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

+0

Извините, не могли бы вы подробно объяснить, что вы пытаетесь сделать? Благодарю. –

ответ

18

Свифта 3:

present(UIViewController(), animated: true, completion: nil) 

dismiss(animated: true, completion: nil) 

Swift 2.2:

self.presentViewController(true, completion: nil) 

Скрыть/отклонить контроллер представления:

self.dismissViewControllerAnimated(true, completion: nil) 
+0

Спасибо, я сейчас туда, я отредактировал мой вопрос, теперь экран просто потемнеет? –

+0

Измените вторую строку следующим образом: 'var StatusVC: UIViewController = StatusViewController()'. Если это не сработает, замените его следующим: 'var StatusVC: StatusViewController = UIViewController()'. – Cesare

+0

Первый по-прежнему черный, а второй - имя nibName? Я не знаю, что у меня? –

0

Вы можете использовать presentViewController:animated:completion: и dismissViewControllerAnimated:completion: методы из UIViewController. См документы here

7

Для Отклонить View Controller в Swift 3,0

self.dismiss(animated: true, completion: {}) 
+2

Было бы немного запутанно, что вы использовали слово «Hide», потому что Hide, похоже, что объект все еще там, но вы его не видите. Фактически, после того, как контроллер просмотра исчезает с экрана, его объект уничтожается, а память, которую он использует, восстанавливается системой. – SLN

+1

Я изменил его, спасибо за предложение по редактированию! @SLN – freddieoh

0

Его довольно легко:

уволить модальное представление с быстрым 3,0: Используйте отклонять Api, как показано ниже:

> @IBAction func dismissClick(_ sender: Any) { 
>   dismiss(animated: true, completion: nil) 
>   
>  } 

Для настоящего:

> @IBAction func dismissClick(_ sender: Any) { 
> present(UIViewController(), animated: true, completion: nil) 
>   
>  } 

Для получения более подробной информации вы здесь:

https://developer.apple.com/documentation/uikit/uiviewcontroller#//apple_ref/doc/uid/TP40006926-CH3-SW96

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