【发布时间】:2016-12-27 15:44:11
【问题描述】:
我正在使用目标 C 和 swift 3 的组合。
在我的 mainView(目标 C)中,我有以下内容
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:[NSBundle mainBundle]];
CourseViewController *courseView = (CourseViewController*)[storyboard instantiateViewControllerWithIdentifier:@"courseView"];
[self.navigationController pushViewController:courseView animated:YES];
在我的故事板中,我的 mainView 将显示一个导航控制器,它是 swift 3 视图的 rootView。
在 swift 3 视图控制器中,我有以下内容,并且 loadView 和 viewDidLoad 被调用了两次
override func loadView() {
webView = WKWebView()
//If you want to implement the delegate
webView?.navigationDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
let temp: CGRect = UIScreen.main.bounds
screenSize = temp
let url = URL(string: kcourseURL)
let req = URLRequest(url: url!)
webView.allowsBackForwardNavigationGestures = true
webView.load(req)
//webView.frame = CGRect(x:0, y:navBarHeight, width:Int(screenSize.width), height:Int(screenSize.height))
webView.addObserver(self, forKeyPath: #keyPath(WKWebView.estimatedProgress), options: .new, context: nil)
self.setBarButton()
}
关于为什么它被调用两次的任何建议?
另外,我试图关闭此视图以返回主视图,但如果我在 swift 3 视图上使用导航控制器,它不会被调用。我试过以下。我是否需要使用 segue unwind 来返回主视图?
self.dismiss(animated: true, completion: nil)
_ = self.navigationController?.popToRootViewController(animated: true)
【问题讨论】:
-
在使用 Storyboard 时,为什么要显式实例化视图控制器?
-
你在
Storyboard的两个viewControllers 之间设置了一个segue 吗? -
我在故事板的 2 个视图之间设置了 segue。课程视图有一个导航控制器作为根视图。我明确地实例化视图,因为我在目标 c 中这样做,不知道当我对 Swift 实现执行目标 c 时它会如何变化。如果我不实例化它,则不会仅通过情节提要设置调用视图。
标签: ios objective-c swift3