【问题标题】:Storyboard view controller with different function具有不同功能的故事板视图控制器
【发布时间】:2016-10-26 16:54:42
【问题描述】:

我是故事板编程的新手。我设计了一个故事板(比如 SB1),它的视图控制器中有两个功能。我有另一个故事板(SB2),它有两个按钮。我想从两个按钮中显示 SB1,但是当我按下 button1 时,应该执行 func1,如果我按下 button2,则应该执行 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)
}

【问题讨论】:

    标签: ios swift storyboard segue


    【解决方案1】:

    你可以这样做:-

        @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)
        }
    

    【讨论】:

      【解决方案2】:

      创建一个BOOL 类型的全局变量让我们在您的SB1 类中说isCallFunc1,现在在您的prepareForSegue 中将BOOL 变量的值分配为true 或false,以用于像这样的不同按钮操作

      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
          }
      }
      

      现在在 SB1 的 viewWillAppear 中,根据 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)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-05
        • 2018-01-01
        • 2015-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多