Переменная не меняется при добавлении в swift - PullRequest
0 голосов
/ 29 мая 2018

В настоящее время я пытаюсь сделать так, чтобы при нажатии на ячейку в табличном представлении она добавлялась к переменной.Хотя, когда я печатаю переменную при запуске приложения, она просто печатает снова 10 независимо от того, сколько раз я щелкаю ячейку.

Вот мой код для второго tableView {

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
        //Used to track the number of times the the second tableView was tapped

        if (tableView == secondTable){
            //Function to disable the timer from being used if timer is running
            if isTimerRunning == true {

            }else{

                var tableView2Taps = 0

            //Transfer data to variable to the timer
             selectedindex = indexPath.row

            if (selectedindex == 0){
                seconds = 3600
                secondsreset = 3600
                tableView2Taps += 10

            }
                if (selectedindex == 1){
                seconds = 2700
                secondsreset = 2700
                tableView2Taps += 10
            }
                if (selectedindex == 2){
                seconds = 1800
                secondsreset = 1800
                tableView2Taps += 10
            }
                if (selectedindex == 3){
                seconds = 1200
                secondsreset = 1200
                tableView2Taps += 10
            }
                if (selectedindex == 4){
                seconds = 600
                secondsreset = 600
                tableView2Taps += 10

            }
                print(tableView2Taps)


            }

            //Prevents the user from changing settings when the timer is running
            if isTimerRunning == false{

        if  tableView.cellForRow(at: indexPath)?.accessoryType == UITableViewCellAccessoryType.checkmark{

            tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.none

        }else{
            tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.checkmark}
            }

        }

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

У вас проблема с областями видимости. Вы объявляете tableView2Taps каждый раз, когда пользователь выбирает строку.

Вам необходимо объявить переменную tableView2Taps вне метода func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath).

Примерно так:

var tableView2Taps = 0

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
...
}

При этом tableView2Taps становится переменной экземпляраи значение будет сохранено даже после окончания func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath).

0 голосов
/ 29 мая 2018

Похоже, вы устанавливаете его обратно на 0 каждый раз, когда происходит выбор.Ваша проблема с этой строкой здесь:

var tableView2Taps = 0

Попробуйте сохранить вышеприведенное как переменную на контроллере представления вместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...