【问题标题】:Swift Button ArraySwift 按钮数组
【发布时间】:2015-08-15 18:25:52
【问题描述】:

Swift + SQLite 项目中,我试图在我的 UI 中使用 SQL 查询填充一组 4 个按钮。到目前为止,我能做的最好的就是如下代码所示,但我确信它可以以更简洁的方式完成。我尝试在同一个循环中同时读取 SQL 查询结果和更改按钮,但遇到了各种类型不匹配和引用错误
任何建议将不胜感激。

var answerText: Array<String?> = ["","","",""]

class ViewController: UIViewController {

@IBOutlet  var answerButton: Array<UIButton> = []

func displayQuestion(questionNumber: Int){

    let querySQL = "SELECT answer FROM answers WHERE answers.question = '\(questionNumber)'"
    let results:FMResultSet? = myDatabase.executeQuery(querySQL,
        withArgumentsInArray: nil)
    var j=0
    while results?.next() == true {
        answerText[j] = results?.stringForColumn("answer")
       j=j+1
    }
    j=0
    for item in  answerButton{
        var button:UIButton = item as UIButton
        button.setTitle(answerText[j], forState: UIControlState.Normal)
        j=j+1
    }
  }   
 }

【问题讨论】:

  • 你能解释更多吗??????
  • 如果您的 SQL 查询需要很长时间会怎样?然后我希望您的结果在执行其余代码时为空

标签: arrays swift button iboutlet iboutletcollection


【解决方案1】:
var buttons: [UIButton?] {
    return [self.firstButton, self.secondButton, self.thirdButton]
}

【讨论】:

  • 解释一下这段代码的作用以及它如何解决问题会很好。
【解决方案2】:

您收到引用错误,因为您将数组声明为 IBoutlet 。如果您的 answerButton 具有 UIButton 对象,则不应是 @IBOutlet var answerButton: Array = []。 answerButton 声明如下 var answerButton: Array = [].

如果您想测试下面的代码,请根据您的代码修改下面的代码,而不仅仅是将其复制并粘贴到您的视图控制器的 func viewDidLoad() 中,这将在您的视图上显示四个按钮

       var answerText: Array<String?> = ["Button1","Button2","Button3","Button4"]

     var answerButton: Array<UIButton> = []

    for var i = 0; i<=answerText.count; i++ {

        var button = UIButton.buttonWithType(.System) as! UIButton

        button.titleLabel!.font = UIFont.systemFontOfSize(12)

        button.titleLabel!.lineBreakMode = .ByTruncatingTail

        var numberOfButton = 5
        let j = i
        var y:CGFloat  = (CGFloat)(j*690/(numberOfButton+1)-21);
        button.frame.size.height = 42
        button.frame.size.width = 150
        button.frame.origin.y = y
        button.frame.origin.x = 250.0
        answerButton .insert(button, atIndex: i)

    }

for var i = 0; i<answerText.count; i++ {

        var button:UIButton = answerButton [i]

        button.setTitle(answerText[i], forState: UIControlState.Normal)

      self.view .addSubview(button)
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 2017-12-03
    相关资源
    最近更新 更多