ios 8和Swift:从视图控制器调用另一个类中的函数

时间:2015-07-29 16:43:44

标签: swift ios8

我想触摸ViewController中的按钮并在自定义类中运行一个简单的函数。不需要参数。代码基本上是:

class MyClass: UIView {
   //init function is here
   //other setup stuff
   ...

func SetFocus() {
//I want to set the camera focus to infinity.
    var error: NSErrorPointer = nil
    var pos: CFloat = 1.0
    captureDevice!.lockForConfiguration(error)
    captureDevice!.setFocusModeLockedWithLensPosition(pos, completionHandler: nil)
    captureDevice!.unlockForConfiguration()
}

}

and in ViewController

import UIKit

class ViewController: UIViewController {

    @IBOutlet var myClass: MyClass!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    @IBAction func myButton(sender: UIButton) {

         myClass.SetFocus()

    }
}

我已经尝试了我能想到的一切(Swift的新功能),应用程序崩溃或我正在调用的函数不运行。 MyClass中的其他所有工作都可以。

2 个答案:

答案 0 :(得分:4)

尝试从MyClass之前删除@IBOutlet。

var myClass : MyClass!

你也可以试试这个:

var myClass : MyClass! = MyClass()

然而,从它的外观来看,您在MyClass中的setFocus()中所做的一切都可以在ViewController中轻松地重新创建。

答案 1 :(得分:1)

试试这个

 @IBAction func myButton(sender: UIButton) {

    var ClassViewController = self.storyboard.instantiateViewControllerWithIdentifier("StoryboardID") as! UIViewController
ClassViewController.MyFunction()

    }