2015-07-02 3 views
0

Я новичок в swift и ios развития. У меня есть два класса и я хочу, чтобы они подключались. Я не использую prepareForSegue. Это то, что у меня есть, что-то должно быть что-то не так.Swift Делегат без подготовкиForSegue

protocol TimeDelegate{ 
func timerDidFinish() 
} 


class Timer: UIViewController { 

// this is where we declare our protocol 
var delegate:TimeDelegate? 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
} 

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

@IBAction func timeFired(sender: UIButton){ 

    delegate?.timerDidFinish() 

} 

} 


import UIKit 


class ViewController: UIViewController, TimeDelegate { 

var timer:Timer = Timer() 

override func viewDidLoad() { 
    super.viewDidLoad() 

} 

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

func timerDidFinish(){ 

    println("Delegate is working") 
} 

} 

По какой-то причине, timerDidFinish не стреляя.

+0

Вы никогда не дадите делегату значение. – Arbitur

+0

@Arbitur Спасибо, я сделал timer.delegate = self, но stil не стрелял. – Imma

+0

делегат? .timerDidFinish() здесь делегат нуль? Проверь это. – Amit89

ответ

3

Из вашего объяснения я понимаю, что два UIViewControllers не связаны каким-либо образом.

Когда вы нажмете кнопку, чтобы запустить функцию @IBAction func timeFired(sender: UIButton){..}, вы будете находиться в Timer UIViewController.

Затем, когда вы создаете экземпляр ViewController? Без создания экземпляра делегат никогда не будет установлен.

Если вы просто хотите, чтобы вызвать timerDidFinish() FUNC и не хотят ничего другого, с ViewController затем сделать это:

class Timer: UIViewController { 

var delegate:TimeDelegate? 

override func viewDidLoad() { 
super.viewDidLoad() 
var vc = ViewController() 
self.delegate = vc 

} 

Тогда ваша функция будет вызываться.

+0

Спасибо всем за ваш вклад. Спасибо @Raja Vikaram, он работает сейчас – Imma

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