it-roy-ru.com

iOS Swift window.rootViewController против presentViewController

Какова лучшая практика для переключения между несколькими представлениями; изменить rootViewController или использовать модальные представления?

Установка rootviewController:

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var vc : UIViewController = storyBoard.instantiateViewControllerWithIdentifier("viewTarget") as TargetViewController
var window :UIWindow = UIApplication.sharedApplication().keyWindow!
window.rootViewController = vc;
window.makeKeyAndVisible()

Изменение модального вида:

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let initViewController: UIViewController = storyBoard.instantiateViewControllerWithIdentifier("viewTarget") as TargetViewController
self.presentViewController(initViewController,animated: false, nil)

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

p.s. В моем случае у меня есть приложение, которое начинается с формы входа в систему как rootViewController. После входа, я думаю, что лучше изменить rootViewController, но я прав?

5
user2718075

Я предлагаю вместо того, чтобы беспокоиться об этом, вы просто должны переопределить rootviewController, остальное заботится ваше приложение.

    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let initViewController: UIViewController = storyBoard.instantiateViewControllerWithIdentifier("viewTarget") as TargetViewController
    self.window?.rootViewController? = initViewController

В этом коде мы просто переопределяем контроллер rootview из AppDelegate.

3
Shailesh Chandavar

Смысл "rootViewController" - это центральная точка для всех ваших представлений.

Рассматривайте это как самое верхнее звено в серии цепочек. например представления слева, можно общаться с представлениями справа, можно говорить с представлениями в середине благодаря "rootViewController". "общая ссылка". Кроме того, он контролирует (или имеет возможность контролировать), как настраиваются гипотетические представления слева, справа и посередине и т. д ...

Хорошо, я сформулировал это немного тривиально, но (UINavigationController) специально для иерархического контента, то есть UITabViewController является отличным примером.

Я только что заметил отличный пост здесь ( Изменение корневого контроллера окна iOS ), находя приличное изображение, чтобы объяснить его прилично.

Слава Мэтт в этом посте :) Надеюсь, это поможет.

Если не стесняйтесь спрашивать :)

edit и для справки, вот что-то дешевое и быстрое, которое я собрал вместе, что может свести вашу голову вокруг раскадровок :)

https://dl.dropboxusercontent.com/u/61211034/viewFun.Zip

Ура,

2
Adrian Sluyters

Контроллер корневого представления окна приложения является первым представлением, загруженным в окно после заставки. Хотя можно изменить контроллер представления окна, чтобы изменить представление, рассмотрите возможность использования UINavigationController и помещая дополнительный контроллер представления в стек представления. Это дает пользователю больше гибкости, позволяя пользователю переключаться между представлениями.

1
JAL