2016-10-26 3 views
0

Я новичок в программировании раскадровки. Я разработал раскадровку (скажем, SB1), у нее есть два функционала в своем контроллере view. У меня есть другая раскадровка (SB2), и у нее есть две кнопки. С обеих кнопок я хочу показать SB1, но когда я нажимаю кнопку1, тогда func1 должен выполняться, и если я нажимаю кнопку2, тогда fun2 должен быть выполнен. Какие-либо предложения.Контроллер просмотра раскадровки с разной функцией

Мой код ниже.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let viewController = segue.destinationViewController as? StotyBoard1ViewController 
     where segue.identifier == "LocatorSegue" { 
      viewController.func1() 
    } 
    //how to invoke SB1 Func2 from here 
} 


@IBAction func button1Click(sender: AnyObject) { 
    self.performSegueWithIdentifier("SB1Segue", sender: self) 
} 

@IBAction func button2Click(sender: AnyObject) { 
{ 
    self.performSegueWithIdentifier("SB1Segue", sender: self) 
} 

ответ

1

Вы можете сделать Somthing как это: -

@IBOutlet weak var button1: UIButton! 
    @IBOutlet weak var button2: UIButton! 
    var sender: UIButton? 

    func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let viewController = segue.destinationViewController as? StotyBoard1ViewController { 
     if segue.identifier == "SB1Segue" { 
      if self.sender == button1 { 
       viewController.func1() 
      } else if self.sender == button2 { 
       viewController.func2() 
      } 
     } 
    } 

    @IBAction func button1Click(sender: AnyObject) { 
     self.sender = sender as! UIButton 
     self.performSegueWithIdentifier("SB1Segue", sender: self) 
    } 

    @IBAction func button2Click(sender: AnyObject) { 
    { 
     self.sender = sender as! UIButton 
     self.performSegueWithIdentifier("SB1Segue", sender: self) 
    } 
1

Сделать BOOL тип глобальной переменной, скажем isCallFunc1 в вашем SB1 классе, теперь в вашем prepareForSegue присвоить значение этой BOOL переменной верно как ложь для различных действий кнопки, как этот

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let viewController = segue.destinationViewController as? StotyBoard1ViewController 
     if segue.identifier == "SB1Segue" { 
      viewController.isCallFunc1 = true 
    } else { 
      viewController.isCallFunc1 = false 
    } 
} 

Сейчас в viewWillAppear из SB1 в соответствии с переменной BOOL вы должны вызвать соответствующую функцию как

if isCallFunc1 { 
    function1() 
} else { 
    function2() 
} 

изменить также идентификатор button2Click различать идентификаторы

@IBAction func button1Click(sender: AnyObject) { 
    self.performSegueWithIdentifier("SB1Segue", sender: self) 
} 

@IBAction func button2Click(sender: AnyObject) { 
{ 
    self.performSegueWithIdentifier("SB1SegueOther", sender: self) 
} 

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

  • Нет связанных вопросов^_^