ios 8 und Swift: Aufruf einer Funktion in einer anderen Klasse, die von view-controller
Ich möchten berühren Sie eine Taste im ViewController, und führen Sie eine einfache Funktion in einer benutzerdefinierten Klasse. Werden keine Parameter benötigt. Code ist im Grunde:
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()
}
}
Ich habe versucht, alles, was ich denken kann (neu in Swift) und die app stürzt ab, oder die Funktion rufe ich nicht laufen. Alles andere in MyClass funktioniert OK.
- Und wo ist festgelegt
myClass
? Tut es vorhanden ist, wenn Sie anrufenMyFunction
? - Wenn es ein
IBOutlet
haben Sie hakte es bis in Storyboard? - Können wir finden Sie in den entsprechenden code in myFunction()
- Sie können auch NSNotificationCenter für dieses Problem
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, löschen Sie die @IBOutlet aus, bevor MyClass.
Können Sie auch versuchen, diese:
Vom Aussehen, aber alles, was Sie tun, in setFocus() in "MyClass" ist, kann leicht nachempfunden werden, in der ViewController.
Versuchen, diese