Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用导航控制器的自定义类基于应用程序委托创建视觉故事板_Ios_Objective C_Iphone_Swift_Uinavigationcontroller - Fatal编程技术网

Ios 使用导航控制器的自定义类基于应用程序委托创建视觉故事板

Ios 使用导航控制器的自定义类基于应用程序委托创建视觉故事板,ios,objective-c,iphone,swift,uinavigationcontroller,Ios,Objective C,Iphone,Swift,Uinavigationcontroller,编辑:如何在此存储库中添加登录视图控制器: 我想采取什么是在AppDelagate和创建它的视觉与故事板,使它 1) 在编译代码和 2) 这样我就可以用故事板来制作其他的东西了。 我添加了新的故事板,并创建了一个带有嵌入式NavigationController的UIViewController,但我无法创建MyCustomClassViewController的自定义 下面是AppDelagate使用的代码。我如何使用故事板来模拟这一点 @UIApplicationMain class Ap

编辑:如何在此存储库中添加登录视图控制器:

我想采取什么是在AppDelagate和创建它的视觉与故事板,使它 1) 在编译代码和 2) 这样我就可以用故事板来制作其他的东西了。 我添加了新的故事板,并创建了一个带有嵌入式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
}
@UIApplicationMain
类AppDelegate:UIResponder、UIApplicationLegate{
变量窗口:UIWindow?
func应用程序(应用程序:UIApplication,didFinishLaunchingWithOptions启动选项:[NSObject:AnyObject]?)->Bool{
self.window=UIWindow(框架:UIScreen.mainScreen().bounds)
//应用程序启动后自定义的覆盖点。
设v=地点(助手:1,名称:,地址:,城市:,类别名称:,aLat:,aLng:)
var venuesArr:Array=[]
附加(v)
让vtv:TableMapViewController=TableMapViewController(帧:self.window?.frame作为CGRect!)
vtv.setVenueCollection(Venuesar)
让nav:UINavigationController=UINavigationController(rootViewController:vtv)
self.window!.rootViewController=nav
self.window!.backgroundColor=UIColor.whiteColor()
self.window!.makeKeyAndVisible()
返回真值
}

如果您使用的是故事板,并且您的导航控制器是应用程序的初始点,那么您可以直接获得它,如下所示

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.
nav.viewControllers = [abc
如果要显式设置,可以执行以下操作

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.
nav.viewControllers = [abc
如果您想让abc作为根视图控制器,可以执行以下操作

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.
nav.viewControllers = [abc
下面是放置视图控制器(您的登录视图控制器)的解决方案

  • 创建视图控制器-LogInViewController
  • 在appdelegate didFInishLoading方法中将此设置为窗口的根视图控制器
  • 登录成功后,在LogInViewController中调用方法
    changeRootViewController()
    。此方法将位于appdelegate类中
  • 在AppDelegate类中,创建上述方法
    func changeRootViewController()
    ,在该方法中,您将窗口的根视图控制器从登录视图控制器更改为导航控制器。现在,您的应用程序将平滑流式显示屏幕

  • TLDR;如何添加登录屏幕作为初始视图控制器并切换到此导航控制器AppDelagate使用上面的代码创建导航控制器(请参阅上面完整编辑的代码)。我要在AppDelagate中消除此问题,请创建一个新的UIViewController.swift(或UINavigationController不确定要插入哪个导航控制器)文件并插入代码,但不要让代码明确说明此ViewController/NavigationController是初始视图控制器,以便我可以将登录屏幕放到情节提要中,并执行到此导航控制器的切换。如果我正确理解您的问题,如果您想在导航之前放置视图控制器n控制器您可以这样做。请参阅我编辑的答案。