我想触摸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中的其他所有工作都可以。
答案 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()
}