Я искал интернет бесчисленное количество раз и не нашел решения для моей ситуации. Вещи, которые могут быть решением, - это то, что я не понял, и они были в Objective-C. Так что, если это дубликат, это не так. Мне не удалось найти решение из других сообщений.Получение данных от каждой ячейки UITableView Swift
Я делаю калькулятор GPA специально для своей школы, где мы получаем разные баллы в зависимости от наших уровней.
Я сделал UITableView с пользовательской ячейкой, которая будет дублироваться определенное количество раз для каждого предмета в классе.
То, что я хочу знать, получаем данные от каждого из этих пользовательских ячеек (Партитура и уровня)
Так что это моя Раскадровка:
и это мое приложение просмотров в тренажере:
Я собираюсь получить счет и лева el, получив текст ярлыков в каждой теме, и я понятия не имею, как получить данные из определенных ячеек.
спасибо.
Вот код, я в настоящее время:
//showStepperValueLabel shows the level and showSliderValueLabel shows the score in the cells.
//customCell is my custom class for my custom cell.
//i have already declared the levels and scores array above in my class
func tableView(tableView: UITableView!, didDeselectRowAtIndexPath indexPath: NSIndexPath!) {
let cell = tableView.cellForRowAtIndexPath(indexPath) as customCell
var level: String! = cell.showStepperValueLabel.text
var score: String! = cell.showSliderValueLabel.text
levels[indexPath.row] = level
scores[indexPath.row] = score
}
//yadiyadayada
//and this is the part where the values get received(it's inside the prepareForSegue function)
var engScore: String = scores[0]
var engLevel: String = levels[0]
var mathScore: String = scores[1]
var mathLevel: String = levels[1]
var sciScore: String = scores[2]
var sciLevel: String = levels[2]
var geoScore: String = scores[3]
var geoLevel: String = levels[3]
var hisScore: String = scores[4]
var hisLevel: String = levels[4]
var chiScore: String = scores[5]
var chiLevel: String = levels[5]
//
Но я получаю сообщение об ошибке, где массивы никогда не получали значения. может кто-то помочь?
EDIT:
я получил ошибку снова, так что я попытался дать строки вручную массивам во время его инициализации, как
var levels: [String] = ["H", "H", "H", "H", "H", "H"]
var scores: [String] = ["12", "23", "34", "45", "56", "67"]
и программа работала прекрасно. Так что приходит к выводу, что проблема возникает в той части, где массив получает строки, который является
func tableView(tableView: UITableView!, didDeselectRowAtIndexPath indexPath: NSIndexPath!) {
let cell = tableView.cellForRowAtIndexPath(indexPath) as customCell
var level: String! = cell.showStepperValueLabel.text
var score: String! = cell.showSliderValueLabel.text
levels.insert(level, atIndex: indexPath.row)
scores.insert(level, atIndex: indexPath.row)
}
вы уверены, что disselect вещь правильный путь? все остальные в интернете научил меня использовать тег, однако, не сказать мне, как использовать его ...
EDIT2:
поэтому я попытался с помощью тегов. это то, что я написал в Tableview: функция cellForRowAtIndexPath
cell.showStepperValueLabel.tag = indexPath.row+10
cell.showSliderValueLabel.tag = indexPath.row
и это то, что я написал в prepareForSegue
var engScore : UILabel! = self.view.viewWithTag(0) as? UILabel
var mathScore: UILabel! = self.view.viewWithTag(1) as? UILabel
var sciScore: UILabel! = self.view.viewWithTag(2) as? UILabel
var geoScore: UILabel! = self.view.viewWithTag(3) as? UILabel
var hisScore: UILabel! = self.view.viewWithTag(4) as? UILabel
var chiScore: UILabel! = self.view.viewWithTag(5) as? UILabel
var engLevel: UILabel! = self.view.viewWithTag(10) as? UILabel
var mathLevel: UILabel! = self.view.viewWithTag(11) as? UILabel
var sciLevel: UILabel! = self.view.viewWithTag(12) as? UILabel
var geoLevel: UILabel! = self.view.viewWithTag(13) as? UILabel
var hisLevel: UILabel! = self.view.viewWithTag(14) as? UILabel
var chiLevel: UILabel! = self.view.viewWithTag(15) as? UILabel
так в функциях расчета GPA я поставил
//Get pxcs
engpxc = engCredits*co.getEnglishPoints(engLevel.text!, engScore: engScore.text!)
mathpxc = mathCredits*co.getNonLanguagePoints(mathLevel.text!, scoreRecieved: mathScore.text!)
geopxc = geoCredits*co.getNonLanguagePoints(geoLevel.text!, scoreRecieved: geoScore.text!)
hispxc = hisCredits*co.getNonLanguagePoints(hisLevel.text!, scoreRecieved: hisScore.text!)
scipxc = sciCredits*co.getNonLanguagePoints(sciLevel.text!, scoreRecieved: sciScore.text!)
chipxc = chiCredits*co.getChiPoints(chiLevel.text!, chiScore: chiScore.text!)
//
и теперь я получаю сообщение об ошибке
fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)
Может кто-нибудь мне помочь?
EDIT3 - подробнее:
я добавил Println в Tableview: функция cellForRowAtIndexPath в части, где я даю тег и выяснил, что метки были переданы успешно, и эти метки получили метки я присвоенные в однако, когда я проверил с помощью println в функции prepareForSegue, где переменные получают свои представления, чтобы проверить, получили ли они ярлыки, но я получил «ноль». В чем проблема?
Я проверил ваше редактирование, и я думаю, что вы ошибаетесь в том, как присвоить значения индексам вашего массива. Во-первых, ваш массив _levels_ должен иметь тип 'NSMutableArray'. Затем ваш оператор присваивания должен измениться на: 'levels.insertObject (level, atIndex: indexPath.row)' – Lester
aren'y NSMutableArray для назначения объектов в массиве ?? уровень и оценка имеют тип String и им пытаются сохранить их в массиве, чтобы они могли получать данные ниже: –
Я получаю сообщение об ошибке «AnyObject» не конвертируется в «String» –