Задать вопрос
jcmax
@jcmax
Супер Пользователь

Почему переменные возвращают одно значение в swift?

Почему? Почему в переменную не записывается значение?

class ListOfQuestions: UITableViewController {
    
    var test_id: Int = 0
    var test_row: Int = 0
    
    var listQuestions = [String: AnyObject]()
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // TODO: зделать подсчет ячеек в тесте для автоматизации
        
        let loaded = LoadJson()
        
        if let answers = loaded.loadJson(filename: "answers") {
            self.listQuestions = answers // answers["test_id_\(self.test_id)"] // загружаем только ответы указанного теста !!!
        }
        
    }

    @IBAction func closeIt(_ sender: UIBarButtonItem) {
        
        dismiss(animated: true, completion: nil)
    }


    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 15
    }


    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell2", for: indexPath)
        cell.textLabel?.text = "Вопрос \(indexPath.row + 1)"

        return cell
    }

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

        let row = indexPath.row + 1
        self.test_row = row
        
        print(test_row)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        
        if segue.destination is QuestionsPage {
            
            print("отправляем данные\(test_id) \(test_row)")
            
            let vc = segue.destination as? QuestionsPage
            vc?.answerParams = [self.test_id, self.test_row]
        }
    }
}


если вывести данные перед seque то они будут 0 почему не могу понять, если я в didselectRow устанавливаю новое значение
  • Вопрос задан
  • 60 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
jcmax
@jcmax Автор вопроса
Супер Пользователь
так, как prepareForSegue готовиться прямо после загрузки класса, то вылавливать нажатую ячейку нужно с помощью

if let path = self.tableView.indexPathForSelectedRow?.row {
            self.test_row = path + 1
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
briahas
@briahas
ObjC, Swift, Python
Или уходить от segue и презентить самому.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы