使用自定义 class 为导航控制器创建基于应用程序委托的视觉故事板
Creating a visual storyboard based upon app delegate using custom class for Navigation Controller
编辑:如何在此存储库中添加登录视图控制器:
https://github.com/gazolla/MapTable-Swift
我想利用 AppDelagate 中的内容并使用故事板可视化地创建它,以便它
1)编译代码时不会立即调用并且
2) 所以我可以用故事板来制作其他的东西。
我添加了新的 Storyboard 并创建了一个带有嵌入式 NavigationController 的 UIViewController,但我无法创建 MyCustomClassViewController 的自定义。
下面是 AppDelagate 使用的代码。我如何使用故事板模仿这个?
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
// Override point for customization after application launch.
let v = Venue(aIdent:1, aName: "", aAddress: "", aCity: "", aCategoryName: "", aLat: "", aLng: "")
var venuesArr : Array<Venue> = []
venuesArr.append(v)
let vtv:TableMapViewController = TableMapViewController(frame: self.window?.frame as CGRect!)
vtv.setVenueCollection(venuesArr)
let nav:UINavigationController = UINavigationController(rootViewController: vtv)
self.window!.rootViewController = nav
self.window!.backgroundColor = UIColor.whiteColor()
self.window!.makeKeyAndVisible()
return true
}
如果你使用的是故事板,如果你的导航控制器是应用程序的初始点,你可以直接如下获取。
let navigation = self.window!.rootViewController as! UINavigationController
如果要显式设置,可以按如下方式设置。
let nav = runTestStoryBoard.instantiateViewControllerWithIdentifier("UINavigationController") as! UINavigationController// Give navigation controller identifier as UINavigationController in storyboard.
let abc = runTestStoryBoard.instantiateViewControllerWithIdentifier("MyCustomViewController") as! MyCustomViewController// Give this view controller identifier as MyCustomViewController in storyboard.
如果你想把 abc 作为根视图控制器,你可以按照下面的方式做。
nav.viewControllers = [abc
这是放置视图控制器(您的登录视图控制器)的解决方案
- 创建视图控制器 - LogInViewController。
- 在 appdelegate didFInishLoading 方法中将其设置为 window 的根视图控制器。
- 登录成功后在LogInViewController中调用方法
changeRootViewController()
。此方法将在 appdelegate class.
- 在 AppDelegate class 中创建上述方法
func changeRootViewController()
,您将在其中将 window 的根视图控制器从登录视图控制器更改为导航控制器。现在您的应用程序将流畅地运行 acress scrrens。
编辑:如何在此存储库中添加登录视图控制器: https://github.com/gazolla/MapTable-Swift
我想利用 AppDelagate 中的内容并使用故事板可视化地创建它,以便它 1)编译代码时不会立即调用并且 2) 所以我可以用故事板来制作其他的东西。 我添加了新的 Storyboard 并创建了一个带有嵌入式 NavigationController 的 UIViewController,但我无法创建 MyCustomClassViewController 的自定义。
下面是 AppDelagate 使用的代码。我如何使用故事板模仿这个?
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
// Override point for customization after application launch.
let v = Venue(aIdent:1, aName: "", aAddress: "", aCity: "", aCategoryName: "", aLat: "", aLng: "")
var venuesArr : Array<Venue> = []
venuesArr.append(v)
let vtv:TableMapViewController = TableMapViewController(frame: self.window?.frame as CGRect!)
vtv.setVenueCollection(venuesArr)
let nav:UINavigationController = UINavigationController(rootViewController: vtv)
self.window!.rootViewController = nav
self.window!.backgroundColor = UIColor.whiteColor()
self.window!.makeKeyAndVisible()
return true
}
如果你使用的是故事板,如果你的导航控制器是应用程序的初始点,你可以直接如下获取。
let navigation = self.window!.rootViewController as! UINavigationController
如果要显式设置,可以按如下方式设置。
let nav = runTestStoryBoard.instantiateViewControllerWithIdentifier("UINavigationController") as! UINavigationController// Give navigation controller identifier as UINavigationController in storyboard.
let abc = runTestStoryBoard.instantiateViewControllerWithIdentifier("MyCustomViewController") as! MyCustomViewController// Give this view controller identifier as MyCustomViewController in storyboard.
如果你想把 abc 作为根视图控制器,你可以按照下面的方式做。
nav.viewControllers = [abc
这是放置视图控制器(您的登录视图控制器)的解决方案
- 创建视图控制器 - LogInViewController。
- 在 appdelegate didFInishLoading 方法中将其设置为 window 的根视图控制器。
- 登录成功后在LogInViewController中调用方法
changeRootViewController()
。此方法将在 appdelegate class. - 在 AppDelegate class 中创建上述方法
func changeRootViewController()
,您将在其中将 window 的根视图控制器从登录视图控制器更改为导航控制器。现在您的应用程序将流畅地运行 acress scrrens。