2015-08-16 4 views
1

Я новичок в разработке iOS и начал работать с Swift. В настоящее время я использую навигацию с вкладкой, содержащую 3 вкладки/навигации. Должен ли я подклассифицировать UIViewController и использовать его для всех 3 сцен, или каждая сцена должна иметь свой собственный подкласс UIViewController. Какова наилучшая практика?iOS лучшая практика: один сцена один контроллер или несколько сцен один контроллер?

спасибо.

UPDATE

Спасибо @Larcerax и @Adrian для входа, я обновил свой раскадровки как таковую:

enter image description here

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

+0

Это отлично, мне это нравится, я не использую раскадровки самостоятельно, но это именно тот настрой, о котором я говорил. одна серьезная причина заключается в следующем: вы можете начать свое приложение с обычного вида, если хотите, а затем, когда регистрация будет завершена, и все настроено, THEN вы нажимаете большой PILE навигационных контроллеров в стек, и приложение вверх и работает – Loxx

+0

Это даст вам возможность иметь очень очень динамичное приложение, вы сможете полностью контролировать базу кода, но он будет развиваться. Хорошая новость заключается в том, что вы собираетесь научиться тому, чтобы это делалось так. – Loxx

+0

Еще одна вещь, с которой вам придется столкнуться, заключается в следующем: теперь у вас есть несколько контроллеров навигации в стеке, вам может потребоваться вызвать «setNavigationBarHidden: TRUE», если вы обнаружите, что ваша панель навигации вверху работает, кроме этого, вы можете нажать на вкладки, которые вы можете представить на вкладках, и вы можете делать всевозможные другие аккуратные вещи. – Loxx

ответ

1

Если бы я тебя, и я был в вашей обуви, прежде чем, я бы не делать то, что вы говорите, но я бы полностью перестроить стратегию и идти по этому пути:

App Делегат: MainScreenRootViewController = ==> UITabBarController:

Вкладка 1 ====> UINavigationController ====> UIViewController

Вкладка 2 ====> UINavigationController ====> UIViewController

Вкладка 3 === => UINavigationController ====> UIViewController

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

и в самом деле, вот некоторый код для вас, что я нашел:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { 
     // Override point for customization after application launch. 
     self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 

     var nav1 = UINavigationController() 
     var first = FirstViewController(nibName: nil, bundle: nil) 
     nav1.viewControllers = [first] 

     var second = SecondViewController(nibName: nil, bundle: nil) 
     var nav2 = UINavigationController() 
     nav2.viewControllers = [second] 

     var tabs = UITabBarController() 
     tabs.viewControllers = [nav1, nav2] 

     self.window!.rootViewController = tabs; 
     self.window?.makeKeyAndVisible(); 

     return true 
    } 

Это, как вы укоренить вкладки с навигационными контроллерами, а затем укоренить главное окно с контроллером TabBar, единственное, что я будет делать другой - это root tabbar в контроллере навигации, а затем root this combo как rootViewcontroller окна.

1

Скорее всего, вы будете делать разные вещи на разных UIViewController, так что вы захотите иметь другой контроллер вида для каждой сцены. Когда вы работаете с UIViewControllers, вы увидите много повторений: используемые методы, но вы, вероятно, будете делать разные вещи внутри этих методов на разных ViewController.

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