【发布时间】:2014-07-31 11:16:57
【问题描述】:
我正在尝试将以下 Objective-c 代码转换为 swift:
- (UIViewController *)currentViewController
{
UIViewController *viewController = self.rootViewController;
while (viewController.presentedViewController) {
viewController = viewController.presentedViewController;
}
return viewController;
}
#ifdef __IPHONE_7_0
- (UIViewController *)viewControllerForStatusBarStyle
{
UIViewController *currentViewController = [self currentViewController];
while ([currentViewController childViewControllerForStatusBarStyle]) {
currentViewController = [currentViewController childViewControllerForStatusBarStyle];
}
return currentViewController;
}
- (UIViewController *)viewControllerForStatusBarHidden
{
UIViewController *currentViewController = [self currentViewController];
while ([currentViewController childViewControllerForStatusBarHidden]) {
currentViewController = [currentViewController childViewControllerForStatusBarHidden];
}
return currentViewController;
}
#endif
//SWIFT
func currentViewController() -> UIViewController {
var viewController = self.rootViewController
while (viewController.presentedViewController) {
viewController = viewController.presentedViewController
}
return viewController
}
func viewControllerForStatusBarStyle() -> UIViewController {
var cViewController = currentViewController()
while (cViewController.childViewControllerForStatusBarStyle) {
cViewController = cViewController.childViewControllerForStatusBarStyle
}
return cViewController
}
func viewControllerForStatusBarHidden() -> UIViewController {
var cViewController = currentViewController()
while (cViewController.childViewControllerForStatusBarHidden) {
cViewController = cVC.childViewControllerForStatusBarHidden
}
return cViewController
}
但我收到一些错误,说 UIViewController!下一行“while (cViewController.childViewControllerForStatusBarStyle)”不符合协议“LogicValue”
我该如何解决这个问题?
【问题讨论】:
-
我认为更 Swift 的方式应该是
while let语法:while let vc = cViewController.childViewControllerForStatusBarHidden() { cViewController = vc }
标签: ios objective-c uiviewcontroller swift