【问题标题】:UIViewController! Does not conform to protocol "LogicValue"用户界面控制器!不符合协议“LogicValue”
【发布时间】: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


【解决方案1】:

childViewControllerForStatusBarStyle() 是方法而不是属性

   while (cViewController.childViewControllerForStatusBarStyle()) {
        cViewController = cViewController.childViewControllerForStatusBarStyle()
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多