在闭包中转到另一个ViewController在swift中不起作用

时间:2015-06-12 06:18:34

标签: ios swift uiviewcontroller

我正在尝试在执行一些网络代码之后转到另一个ViewController(它是TabBarController的一部分)(使用AlamoFire,在闭包内)。我当前VC的名称是StartingVC。在关闭验证了一些代码之后,我想转到另一个VC。在我的例子中,代码得到满足,我100%肯定,因为我有一个println()表示如此,但它不会把我带到另一个VC。

我的关闭代码如下:

Alamofire.request(.POST, "http://localhost/test.php", parameters: dataToSend).responseJSON{
                (request, response, data, error) in

self.showViewController(HomeViewController(), sender: nil)

我知道我需要在闭包内使用self来引用我正在使用的实际VC。但代码不起作用。

你知道如何使用代码呈现/推送/转到另一个VC吗?我没有使用任何Storyboard链接到我的HomeViewController,因为我在编程和故事板中使用segue之前遇到了一些问题,这就是为什么我决定采用代码方法。

提前感谢您的帮助

干杯!

1 个答案:

答案 0 :(得分:0)

如果您不想使用故事板设置导航控制器而无法从那里开始,那么您的appdelegate应该是:

class AppDelegate: UIResponder, UIApplicationDelegate {
//you must mark the window and navigationController variables as optional
var window: UIWindow?
var navigationController: UINavigationController?

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

    navigationController = UINavigationController()
    var homeViewController: UIViewController = UIViewController()
    self.navigationController.pushViewController(homeViewController, animated: false)

    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    self.window.rootViewController = navigationController

    self.window.backgroundColor = UIColor.whiteColor()

    self.window.makeKeyAndVisible()

    return true
}
}

除了在视图控制器上,您可以使用storyboard对象推送视图控制器:

var firstViewController = self.storyboard!.instantiateViewControllerWithIdentifier("firstViewController") as! firstViewController
self.navigationController?.pushViewController(firstViewController, animated: false);

现在的视图控制器:

let vc = ViewController() //change this to your class name
self.presentViewController(vc, animated: true, completion: nil)