在applicationDelegate中引入和分配视图控制器会使viewController中的所有UI元素都为零

时间:2016-01-30 12:17:25

标签: ios xcode swift uiapplicationdelegate

在我的ApplicationDelegate中:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {

        initMembers()
        runTutorialIfNeeded()
        return true
    }

 func initMembers()
    {
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        mainViewController = InlineMainViewController()
        window?.rootViewController = mainViewController
        window?.makeKeyAndVisible()
    }

但这一行会导致问题:

mainViewController = InlineMainViewController()

当代码到达override func viewDidLoad() {

时,所有UIElements都为零

如果我评论此行mainViewController = InlineMainViewController() 主故事板中的所有Ui元素都不是零

我该如何解决这个问题? 我需要在applicationDelegate中保存主viewController的引用,以便在messageMgr: GNSMessageManager发送事件时与它进行交互。

1 个答案:

答案 0 :(得分:1)

您初始化ViewController错误。如果您正在使用故事板,那么您应该写下:

UPDATE table_name
SET Gender = CASE
               WHEN Name IN ('Geetha', 'Radha') THEN 'Female'
               WHEN Name IN ('Ram', 'Syam', 'Ravi') THEN  'Male'
             END
WHERE Name IN ('Ram', 'Syam', 'Geetha', 'Radha', 'Ravi');

如果您正在使用NIB / XIB文件,那么您应该写下:

    let storyboard = UIStoryboard(name: "YourStoryBoardFileName", bundle: nil)
    mainViewController = storyboard.instantiateViewControllerWithIdentifier("your_VC_ID")
    window.rootViewController = mainViewController
    window.makeKeyAndVisible()

如果您只是像InLineViewController()一样初始化它,那么就没有附加视图,因此一切都是零。