UITableView copyWithZone

#ios #swift #xcode #uitableview #tableview

#iOS #swift #xcode #uitableview #просмотр таблицы

Вопрос:

Я следую руководству о том, как создать таймер, и я не могу понять, что я сделал не так. Вот код, в котором я думаю, что что-то идет не так:

 import UIKit

class ViewController: UIViewController {

    var laps: [String] = []

    var minutes = 0
    var fractions = 0
    var seconds = 0
    var timer = NSTimer()
    var timerIsOn = false
    var timerString: String = ""

    @IBOutlet weak var timerLabel: UILabel!


    @IBOutlet weak var lapsTable: UITableView!

    @IBAction func startButton(sender: AnyObject) {
        if timerIsOn == false {


        fractions = 0
        seconds = 0
        minutes = 0
        timerLabel.text = "(minutes):(seconds).(fractions)"
        timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: (#selector(ViewController.updateTimer)), userInfo: nil, repeats: true)
            timerIsOn = true
        }

    }




    @IBAction func stopButton(sender: AnyObject) {
        timer.invalidate()
        timerIsOn = false
        laps.insert(timerString, atIndex: 0)
        lapsTable.reloadData()

    }

    func updateTimer(){
        fractions  = 1
        if fractions == 100 {
            fractions = 0
            seconds  = 1
        }
        if seconds == 60 {
            seconds = 0
            minutes  = 1

        }

        timerLabel.text = "(minutes):(seconds).(fractions)"

    }

    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
        var cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "Cell")

        cell.backgroundColor = self.view.backgroundColor

        cell.textLabel!.text = "Solve (indexPath.row)"
        cell.detailTextLabel?.text = laps[indexPath.row]

        return cell

    }

    func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
        return laps.count


    }
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

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


}
  

и это ошибка:

Таймер [3034:273560] -[UITableView copyWithZone:]: нераспознанный селектор, отправленный экземпляру 0x7f893301da00 2016-10-04 15:33:34.565 Таймер кубика профессора [3034:273560] *** Завершение работы приложения из-за неперехваченного исключения ‘NSInvalidArgumentException’, причина: ‘-[UITableView copyWithZone:]: нераспознанный селектор, отправленный вэкземпляр 0x7f893301da00

Пожалуйста, помогите.

Комментарии:

1. Не похоже, что ваша проблема здесь. Установите точку останова исключения, чтобы определить, где происходит сбой

2. Я решил поместить весь код сюда. Я не смог понять, что такое точка останова. В нем говорилось, что поток 1: точка останова 1.1, я не знаю, поможет ли это вам.

3. Трассировка стека сбоев помогла бы @Jackson

4. Установите стиль ячейки в построителе интерфейса и используйте повторно используемые ячейки let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) , а экземпляры табличного представления в методах делегирования не являются необязательными (без восклицательного знака) func tableView(tableView: UITableView,...