我正在开发一个产生结帐流程的应用。 我有每个项目的SelectionViewControllers和一个最终的InvoiceViewController。
以下是我之前的app appate。我已经了解到让应用程序委托执行所有这些职责并不是一个好主意。
var window: UIWindow?
var nextVCIndex = 1
var vcArray = [ECSelectionViewController]()
var items = [ECItem]()
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
ECNetworkingHelper.sharedInstance.fetchCurrentFix { (data, error) in
dispatch_async(dispatch_get_main_queue(), {
let nav = UINavigationController()
self.items = data
//create my selectionViewControllers
for item in data {
if let selectionVC = ECSelectionViewController(item: item) {
self.vcArray.append(selectionVC)
}
}
nav.viewControllers = [self.vcArray[0]]
NSNotificationCenter.defaultCenter().postNotificationName("dataLoaded", object: nil)
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.rootViewController = nav
self.window?.makeKeyAndVisible()
})
}
return true
}
我一直致力于将网络转移到导航控制器。
所以我的问题是如何设置导航控制器并组织我的代码以产生与我相同的功能。 - 从数据源获取项目数据。 - 为每个项目创建选择视图控制器。并在用户点击最终选择视图控制器后,将它们加载到导航控制器中以供用户循环。(导航栏上的下一个按钮以继续下一个项目)。我初始化发票视图控制器。
另外要注意。我想在下载数据时显示加载视图控制器。完成后,加载所有选择视图控制器,供用户导航。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
//Show Loading Indicator
let nav = ECNavigationController()
let loadingVC = ECLoadingViewController()
nav.viewControllers = [loadingVC]
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.rootViewController = nav
self.window?.makeKeyAndVisible()
return true
}