我正在尝试在执行一些网络代码之后转到另一个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之前遇到了一些问题,这就是为什么我决定采用代码方法。
提前感谢您的帮助
干杯!
答案 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)