2015-06-06 3 views
0

Все,Делегат потери View Controller объектов быстры

Я создал протокол, а контроллер представления является делегатом этого протокола, например, так:

import Foundation 

protocol PayButtonProtocol { 
    func enablePayButton() 
    func disablePayButton() 
} 

И контроллер мнение делегат :

class ViewController: UIViewController, PayButtonProtocol 

протокол функции следующим образом:

func enablePayButton() { 
     println("Button enabled") 
     PAYBarButton.enabled = false 
    } 

    func disablePayButton() { 
     PAYBarButton.enabled = false 
    } 

Я поставил класс и назначить делегата:

class Trigger 
{ 
    var delegate:PayButtonProtocol? 

    func EnablePayButton() 
    { 
     delegate?.enablePayButton() 
    } 
} 

Затем я поставил триггер для запуска функции:

let localtrigger = Trigger() 
     localtrigger.delegate = ViewController() 
     localtrigger.EnablePayButton() 

Это работает и «кнопка включена» отображается в консоли. Но кнопка «Бар» (PAYBarButton) равна нулю, и кажется, что контроллер просмотра потерял свою иерархию, поскольку я не могу получить доступ к каким-либо объектам контроллеров представлений. Контроллер просмотра был создан с помощью построителя интерфейса. У кого-нибудь есть идеи? Это

localtrigger.delegate = ViewController() 

, который перестраивает viewconotroller и делает оригинал недоступным? Если да, то как мне это сделать?

ответ

0

, если вы создаете объект localTrigger внутри ViewController класса вы можете просто сделать:

let localtrigger = Trigger() 
localtrigger.delegate = self // self is an instance of ViewController 
localtrigger.EnablePayButton() 
Смежные вопросы