使用导航控制器的自定义类创建基于app委托的可视化故事板



编辑:如何在此存储库中添加登录视图控制器:https://github.com/gazolla/MapTable-Swift

我想把AppDelagate中的东西用storyboard直观地创建,这样它1)编译代码时没有立即调用2)这样我就可以用故事板制作其他的东西了。我添加了新的故事板,并创建了一个带有嵌入式导航控制器的UIViewController,但我不能创建MyCustomClassViewController的自定义。

下面是appdelegate使用的代码。我如何使用storyboard来模拟这个?

@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
}

如果你正在使用storyboard并且你的导航控制器是应用程序的初始点,你可以像下面这样直接获得它。

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

这是一个解决方案来放置视图控制器(您的登录视图控制器)

  1. 创建一个视图控制器- LogInViewController。
  2. 在appdelegate didFInishLoading方法中将这个设置为window的根视图控制器。
  3. 在LogInViewController中,登录成功后调用方法changeRootViewController()。这个方法将在appdelegate类中。
  4. 在AppDelegate类中创建上面的方法func changeRootViewController(),你将把窗口的根视图控制器从登录视图控制器改为导航控制器。现在你的应用程序将平滑流动地址屏幕。

最新更新