2016-06-08 3 views
0

на мой взгляд, контроллер, я настроил это.Делегат продолжает возвращать нуль

protocol MenuDelegate { 
func updateIndexOfMenuExpanded(index: Bool) 
} 

class ViewController: UIViewController,UITableViewDataSource, UITableViewDelegate { 
var delegate : MenuDelegate? 

func performaction() -> Void{ 
    delegate!.updateIndexOfMenuExpanded(false) 
} 
} 

и в моем baseviewcontroller

class BaseViewController: UIViewController, MenuDelegate{ 

func updateIndexOfMenuExpanded(index: Bool){ 
    self.menuIsExpanded = index 
} 
} 

помогите пожалуйста. Спасибо.

+2

Потому что это ноль. Вы не устанавливаете его нигде. – Desdenova

+0

Я новичок в программировании, как его установить и где его установить? – carmelo

+2

[Делегирование] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html#//apple_ref/doc/uid/TP40014097-CH25-ID276) – Desdenova

ответ

0

Вы должны сначала установить делегат.

let viewController = ViewController() 
let baseViewController = BaseViewController() 
viewController.delegate = baseViewController 

Было бы целесообразно, чтобы сделать Делегат слабую ссылку и не заставить развертку с !.

class ViewController: UIViewController,UITableViewDataSource, UITableViewDelegate { 
    weak var delegate : MenuDelegate? 
    func performaction() { 
     delegate?.updateIndexOfMenuExpanded(false) 
    } 
} 
0

Делегат используется, когда вы хотите передать данные между viewcontrollers.this ПОДХОД является 12:59

Вот ответ, как передавать данные с помощью делегата в ViewController

определяют протокол в целях контроллер

protocol ViewController1BackClicked { 
func btnBackClicked(str : String) 

}

класс ViewController1: UIViewController {

var strTitle : String? 
var delegate : ViewController1BackClicked? 

override func viewDidLoad() { 
    super.viewDidLoad() 

    if strTitle != nil{ 
     title = strTitle 
    } 
} 

override func viewWillDisappear(animated: Bool) { 

    delegate?.btnBackClicked("Krutarth") 


} 

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

в настоящее время Протокол created.to передавать данные в другой контроллер представления

ViewController 1 мы хотим получить доступ к данным

func btnBackClicked(str: String) { 
    title = str 
} 

выход: Krutarth

это пример использования протокола

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