2015-07-29 1 views
1

Я хочу нажать кнопку в ViewController и запустить простую функцию в пользовательском классе. Никаких параметров не требуется. Код в основном:ios 8 и Swift: вызов функции в другом классе из контроллера вида

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 работает нормально.

+1

А где установлен 'myClass'? Он существует, когда вы называете 'MyFunction'? – Larme

+0

Если это «IBOutlet», вы подключили его к раскадровке? – aforaudrey

+0

Можем ли мы видеть конкретный код в myFunction() – JustAnotherCoder

ответ

4

Попробуйте удалить @IBOutlet еще до MyClass.

var myClass : MyClass! 

Вы также можете попробовать это:

var myClass : MyClass! = MyClass() 

Судя по ней, однако, все, что вы делаете в SETFOCUS() в MyClass, может быть легко воссозданы в ViewController.

+0

Перемещение func + поддерживающего кода в ViewController было ключом. Огромное спасибо! –

1

Попробуйте

@IBAction func myButton(sender: UIButton) { 

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

    } 
+0

Спасибо. Я пробовал это как есть, и с некоторыми вариациями - без успеха. –

+1

Вы установили раскладку Id – Lamar

Смежные вопросы