单击单元格后,TableView单元格数据正在消失。为什么会这样?

时间:2016-01-28 16:19:54

标签: ios swift uitableview

我创建了一个tableview。然后调用url获取数据并相应地加载tableview。但每当我点击一个单元格时,数据就会消失。 我尝试将userinteractionenabled设为false或选择样式为.None。它仍然没有用。有什么理由吗?

class CheckInTableViewController: UITableViewController {

var flightInfo : [Flight]!
  var multipleChoiceQuestion : [MultipleChoiceQuestion]!
    var question : [String] = [String]()
       var answer : [[String]] = [[String]]()
         var correctAnswer: [Int] = [Int]()

override func viewDidLoad() {
    super.viewDidLoad()
    loadData()
   }

func loadData(){

    Request.CheckInFlight().execute().validate().responseJSON { (request, _, data, error)
        -> Void in

        if error != nil {
            print("error")
        }
        else{
            self.flightInfo = Response.flightsFromJSON(data)
              self.multipleChoiceQuestion = self.flightInfo[0].checkInUpdate.checkInTest.multipleChoiceQuestion

            for questionNew in self.multipleChoiceQuestion {
                self.question.append(questionNew.question)
                self.answer.append(questionNew.answerArray)
                self.correctAnswer.append(questionNew.correctAnswerId)

            }

            self.tableView.reloadData()

}
}
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    if flightInfo != nil {
       return flightInfo.count + 1
    }
          return 1
}




override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = UITableViewCell()

    switch indexPath.row {

    case 0: _ = tableView.dequeueReusableCellWithIdentifier("headercell", forIndexPath: indexPath) as! CheckInHeaderTableViewCell

    default:
        let cell = tableView.dequeueReusableCellWithIdentifier("datacell", forIndexPath: indexPath) as! CheckInTableViewCell


    cell.flightNumber.text = flightInfo[indexPath.row - 1].fullFlightId

        cell.departureCity.text = flightInfo[indexPath.row - 1].departureInfo!.airport.iataCode
       cell.departureDate.text = dateFormatter(flightInfo[indexPath.row - 1].departureInfo!.scheduledDateTime)
        cell.departureTime.text = flightInfo[indexPath.row - 1].departureInfo!.scheduledDateTime.flightTimeString()
        cell.arrivalCity.text = flightInfo[indexPath.row - 1].arrivalInfo!.airport.iataCode
       cell.arrivalDate.text = dateFormatter(flightInfo[indexPath.row - 1].arrivalInfo!.scheduledDateTime)
        cell.arrivalTime.text = flightInfo[indexPath.row - 1].arrivalInfo!.scheduledDateTime.flightTimeString()

    }
    return cell
}

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,我将我的评论转化为答案。

你是return第一行的单元格。那是一个新鲜的细胞。

您正在修改的出列单元格并且在转换中没有return丢弃。

在你遇到的情况下,你会立即离开。

这应该会在第二个let cell =上给你一个关于范围歧义的警告,顺便说一句。

如果问题仍然存在,请更新您的问题并告知我们:)