2014-09-04 55 views
1

我有2個ViewControllers。我沒有故事板。我想從第一個視圖移動到另一個視圖,一切都在第一個視圖控制器中完成。有什麼辦法呢?這是這樣的,第一個視圖顯示一個圖像,並在後臺進行一些API調用。 API調用成功後,我希望它移動到第二個ViewController(LoginActivityViewController)。我試圖在第一個ViewController中調用它:以編程方式從一個UIViewController在Swift中移動到另一個

var loginActivity = LoginActivityViewController() 
self.navigationController.pushViewController(loginActivity, animated: true) 

但是,這沒有奏效。這個怎麼做?

這裏是AppDelegate中我的應用功能

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool { 
    // Override point for customization after application launch. 
    window = UIWindow(frame: UIScreen.mainScreen().bounds) 
    let navigationController: UINavigationController = UINavigationController(rootViewController: RootViewController()) 
    navigationController.setNavigationBarHidden(true, animated: false) 
    window!.rootViewController = navigationController 
    window!.makeKeyAndVisible() 
    return true 
} 

這裏是我的RootViewController的的viewDidLoad()

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view. 
    let image1 = UIImage(named: "Default.png") 
    let imageview = UIImageView(image: image1) 
    self.view.addSubview(imageview) 
    var loginActivity = LoginActivityViewController() 
    self.navigationController.pushViewController(loginActivity, animated: true) 
} 
+0

你有沒有在視圖層次結構的有效導航控制器實例? – holex 2014-09-04 11:37:41

+0

我依賴於'移動'之間的意思嗎? – 2014-09-04 11:43:50

+0

我創建了一個實例。但是這也行不通。我想執行一個賽格。 – Rishi 2014-09-04 11:47:33

回答

2

這是你的方法應該是什麼樣子,在正確INITING導航控制器:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { 

    window = UIWindow(frame: UIScreen.mainScreen().bounds) 
    let rootViewController: RootViewController = RootViewController(nibName: "RootViewController", bundle: nil) 
    let navigationController: UINavigationController = UINavigationController(rootViewController: rootViewController) 
    window!.rootViewController = navigationController 
    window!.makeKeyAndVisible() 
    return true 
} 

現在您可以將新的視圖控制器推入分區CHY。


更新

,如果你不希望顯示導航欄插入此行到上面的代碼。

navigationController.setNavigationBarHidden(true, animated: false) 
+0

是的,但它在應用程序的UI中創建了一個導航視圖。我不要那個。我希望它移動到另一個視圖而不顯示導航視圖。我之前做過這個,看到它在UI中創建了我不想要的導航。在第一個視圖中完成所有事情之後,它應該移動到另一個視圖。 – Rishi 2014-09-04 12:04:28

+0

@Rishi,你看起來足夠聰明,以瞭解是否有_no_導航控制器,你無法將任何東西推入其中,呃......?請檢查我更新的答案,它向您展示瞭如何可選地移除導航欄。 – holex 2014-09-04 12:07:57

+0

謝謝。現在,如果我想在RootViewController中使用viewDidLoad中的navigationController,它是否會是相同的navigationController? – Rishi 2014-09-04 12:21:11

0
var next = self.storyboard?.instantiateViewControllerWithIdentifier("DashboardController") as! DashboardController 
self.presentViewController(next, animated: true, completion: nil) 

不要忘記設置的ViewController StoryBoard IdStoryBoard - >identity inspector

相關問題