PresentViewController在静态/类函数

时间:2016-04-15 02:40:47

标签: ios uiviewcontroller compiler-errors static-methods presentviewcontroller

我有一个菜单栏,我想在应用程序的每个页面(UIViewController)上使用。所以我想我只需要编写一次并在所有页面上使用它,而不是在每个页面上重现相同的代码。为此,我创建了一个新类,使用自己的UIViewController文件扩展MenuBarViewController(命名为XIB),在该类中创建了一个函数,该函数包含用于生成菜单栏,只需在我要放置菜单栏的任何UIViewController中调用该功能。似乎工作相当无聊,但是当我尝试在MenuBarViewController类中创建一些帮助函数时会遇到问题,这会触发导航到另一个视图,当其中一个菜单图标被点击时。我将在下面包含我正在使用的代码的简化版本,其中说明了整个问题。

class MenuBarViewController: UIViewController {

    func menuBar(viewController:UIViewController){

        let menuBar = UIView(frame:CGRectMake(0,0,100,20 ))
        menuBar.backgroundColor = UIColor.blackColor()
        viewController.view.addSubview(menuBar) //Add the newly created view to the main view(self)
        //Add an icon view to the menubar
        let iconView = UIImageView(frame: CGRectMake(5,0,5,5))
        menuBar.addSubview(iconView)

        //Add a gesture recognizer for the icon view
        iconView.userInteractionEnabled = true
        let tapHomeButton = UITapGestureRecognizer(target: self, action:#selector(MenuBarViewController.goToHomeView(_:)))
        iconView.addGestureRecognizer(tapHomeButton)

        //Add an icon to the icon view
        let iconImageName = UIImage(named:"home.png")!
        iconView.image = iconImageName
    }

    //Helper function to handle the gesture recognizer, helps transition to another view
    func goToHomeView(sender: UIImageView!) {
        appData.lastView = "GameViewController"
        let settingsVC = SettingsViewController(nibName:     "SettingsViewController", bundle: nil)
        presentViewController(settingsVC, animated: true, completion: nil)
    }
}

现在,当我点击图标时,没有回应。所以我想我将类函数(menuBargoToHomeView)声明为“class”或“static”funcs,然后直接调用菜单栏班级名称。但是我在调​​用“在这一行:

”中得到了这个编译错误“额外参数'animated'
presentViewController(settingsVC, animated: true, completion: nil)

因此当presentViewController方法在静态或类函数中声明时,某些内容必定是错误的,因为当我使用goToHomeView函数时,只需执行像打印某些文本一样简单的操作,它就可以正常工作。所以我现在完全失去了。该怎么办?我是以完全错误的方式解决这个问题吗?

0 个答案:

没有答案