0

私はクイズアプリに取り組んでいます。APIから質問を受けています。オプションにテーブルビューを使用しています。

ユーザーが最初の質問の回答を選択して [次へ] を押すと、前の質問に移動します。次に、選択した回答を選択したままにする必要があります。

私は多くのことを研究し、これを見つけました:

Swift で UITableViewController の選択をプログラムでエミュレートする

しかし、テーブル ビューでユーザーが選択した回答を自動的に選択することはできません。

これが私の現在のUIです

VC

func getOptions(){
    OptionArray.removeAll(keepCapacity: false)
    Alamofire.request(.GET, "http://www.wins.com/index.php/capp/get_chapter_answers/\(EID)/\(QuestionID[Qindex])")
        .responseJSON { (_, _, data, _) in
            println(data)
            let json = JSON(data!)
            let catCount = json.count
            for index in 0...catCount-1 {
                let disp = json[index]["DISPLAY_STATUS"].string
                if disp == "Y"{
                let op = json[index]["ANSWER"].string
                self.OptionArray.append(op!)
                let ans = json[index]["RIGHT_ANSWER"].string
                self.AnswerArray.append(ans!)
                }
            }
            self.OptionTable.reloadData()
            println(self.OptionArray.count)
    }
}

@IBAction func Previous(sender: AnyObject) {
    Qindex--
    ShowQuestion()
}


@IBAction func Next(sender: AnyObject) {
    Qindex++
    ShowQuestion()
   }


func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return self.OptionArray.count
}


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = self.OptionTable.dequeueReusableCellWithIdentifier("Option") as! OptionCell

    cell.Optionlabel?.text = self.OptionArray[indexPath.row]
    cell.layer.masksToBounds = true;
    cell.layer.cornerRadius = 6;
    cell.layer.borderWidth = 2.0
    cell.layer.borderColor = colorsArray[1].CGColor
    return cell

}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    let indexPath = tableView.indexPathForSelectedRow();

    let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as! OptionCell;

    if currentCell.selected == true{
        currentCell.layer.borderWidth = 4.0
        currentCell.layer.borderColor = colorsArray[6].CGColor
        println(currentCell.Optionlabel?.text)
    }
}

func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {


    let currentCell = tableView.cellForRowAtIndexPath(indexPath) as! OptionCell;

    if currentCell.selected == false{
        currentCell.layer.borderWidth = 2.0
        currentCell.layer.borderColor = colorsArray[1].CGColor

    }
}

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return 70
}

アップデート

  1. 20以上の質問があります。そのため、質問ごとに選択した回答を個別に保存する必要があります。

  2. 2回目のアクセス時にオプションがランダムに位置を変更するため、インデックスパスの位置を使用して回答を選択できません。

4

1 に答える 1