【问题标题】:How to determine UIButton was pressed?如何确定 UIButton 被按下?
【发布时间】:2016-09-13 09:42:45
【问题描述】:

我正在尝试为我的孩子制作一个简单的应用程序。

下一步是

  1. 检测UIButton被按下了什么。
  2. 将特定数组的值赋给一个空数组 按钮

我现在有两个按钮(总共会有 20 多个)

@IBAction func tapLA(sender: UIButton) {
}

@IBAction func tapLB(sender: UIButton) {
}

它们都与具有图像数组的PageViewController 连接

// the array
private var contentImages = ["",
                             "",
                             "",
                             ""]

//the array of gallery images lettera A
private let contentImagesA = ["letteraA",
                              "ape",
                              "albero",
                              "arcobaleno"]


// the array of gallery immages lettera B
private let contentImagesB = ["letteraB",
                              "barca",
                              "balena",
                              "banana"]

我需要根据点击的按钮显示不同的数组,但我不知道该怎么做。 简而言之,应该是:

如果按下按钮 A,则显示数组 A 的图像

如果按下按钮 B,则显示数组 B 的图像。

【问题讨论】:

  • 我不知道你的用户界面怎么样?为什么你不能使用 UICollectionView 而不是 UIButton。
  • 我创建了一个 UICollectionView,这是一个非常好的建议。谢谢!现在我被困在获取单元格索引:1.我创建了一个var letterIndex:Int = 0 ... 2.然后在函数didSelectItemAtIndex中我分配了letterIndex = indexPath.row,然后在另一个我想要的视图控制器中有这个号码,它看不到它,它给了我“未解析的标识符”
  • 您可以在 SecondViewController 中设置一个类似于 selectedIndex 的变量,并在 performSegueWithIdentifier 方法中为其设置值。

标签: ios arrays swift uibutton


【解决方案1】:

当按钮被选中时运行加载图片的方法

@IBAction func tapLA(sender: UIButton) {
    openPicturesFrom(contentImagesA)
}

func openPicturesFrom(arr: Array) {
    //here you have array and you can start opening pictures
}

【讨论】:

    【解决方案2】:

    您也可以采用这种方法: 在您的第一个控制器中定义所有数组。

     // define globally
       var imageDictinary = Dictionary<Int, Array<String>>()
       var imageArray:[String] = Array()
    

    在您的viewDidLoad 或初始化方法中

    imageDictinary = [1:["letteraA","ape","albero","arcobaleno"],
                      2:["letteraB","barca","balena","banana"],
                      // and so on..
                      ]
    

    添加标签从 1 到 26 的按钮(字典中的数组编号)。将onButtonClick 方法分配给所有按钮操作。

    @IBAction func onButtonClick(sender: UIButton) {
        let images:Array = imageDictinary[sender.tag]!;
         imageArray = images
         openPageController()
     }
    
     openPageController(){
        // open page controller here programatically
        }
    
     override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
            let page:PageViewController  = segue.destinationViewController as! PageViewController
            page.images = imageArray
        }
    

    这里你只需要编写打开pageController到一键操作的代码。使用 seague 打开它。

    每次单击特定按钮时,其对应的数组将分配给imageArray,您可以在整个代码中使用它。

    快乐编码:)

    【讨论】:

      【解决方案3】:

      这样做的一种方法是使用 Dictionary 包含您的数组作为值,然后使用某种 ID 作为键(您可以在 Swift here 中阅读有关 dictionaries 的更多信息)

      所以你可以这样做:

      let content = ["buttonA" : ["letteraA",
                                  "ape",
                                  "albero",
                                  "arcobaleno"],
                     "buttonB" : ["letteraB",
                                  "barca",
                                  "balena",
                                  "banana"]]
      

      在您的“按钮操作”中,您将从键中获取正确的数组,然后调用一个方法,该方法将对该数组执行您想做的任何事情:

      @IBAction func tapLA(sender: UIButton) {
         if let aArray = content["buttonA"] {
             populateAndDoYourMagicHere(withArray: bArray)
         }
      }
      
      @IBAction func tapLB(sender: UIButton) {
         if let bArray = content["buttonB"] {
             populateAndDoYourMagicHere(withArray: bArray)
         }
      }
      
      func populateAndDoYourMagicHere(withArray array: [String]) {
             contentImages = array
             //do your magic here
      }
      

      希望这有意义并能帮助你。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-14
        • 1970-01-01
        • 2013-10-17
        • 2012-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多