Я разрабатываю приложение Quiz, которое выдает вопросы от JSON. Я уже использовал reloadData для TableView много раз & работал, как ожидалось. Но теперь я получаю вопросы, используя Alamofire &, сохраняя его в массиве &, получая вопросы из массива.TableView.reloadData() не работает? (SWIFT)
Но он возвращает Array is Out of Index.
Как я могу отобразить первый элемент массива в первой ячейке?
VC
class ExamController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var Exam: UITableView!
var CourseID : String!
var EID : String!
var EName : String!
var ET : String!
var QArray : [String] = []
var progress = GradientCircularProgress()
override func viewDidLoad() {
super.viewDidLoad()
progress.show(style:MyStyle())
// JUST TRIED
dispatch_async(dispatch_get_main_queue(), {
self.getQuestions()
// DO SOMETHING ON THE MAINTHREAD
self.Exam.reloadData()
})
self.Exam.tableFooterView = UIView(frame: CGRectZero)
self.Exam.tableFooterView?.hidden = true
}
func getQuestions(){
if ET == "CHAPTER" {
Alamofire.request(.GET, "http://www.wis.com/index.php/capp/chapter_questions_details/\(CourseID)/\(EID)/10")
.responseJSON { (_, _, data, _) in
println(data)
let json = JSON(data!)
let catCount = json.count
for index in 0...catCount-1 {
let q = json[index]["QUESTION"].string
self.QArray.append(q!)
println(self.QArray)
}
}
self.progress.dismiss()
self.Exam.reloadData()
} else if ET == "FA" {
Alamofire.request(.GET, "http://www.wis.com/index.php/capp/fa_questions_by_course_id/\(CourseID)/\(EID)")
.responseJSON { (_, _, data, _) in
println(data)
let json = JSON(data!)
let catCount = json.count
for index in 0...catCount-1 {
let q = json[index]["QUESTION"].string
self.QArray.append(q!)
println(self.QArray)
}
}
self.progress.dismiss()
self.Exam.reloadData()
}
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if indexPath.row == 0{
let cell = self.Exam.dequeueReusableCellWithIdentifier("Question") as! QuestionCell
cell.Questionlabel?.text = QArray[0]
return cell
}
else
{
let cell = self.Exam.dequeueReusableCellWithIdentifier("Option") as! OptionCell
cell.Optionlabel?.text = "Option"
return cell
}
}
'numberOfRowsInSection' должен вернуть количество элементов в источнике данных динамически не статическое значение – vadian
Помещенный' println' заявление, в тех местах, где вы называете 'reloadData'. Я предполагаю, что вызов перезагрузки происходит до того, как ваши данные будут возвращены. Журнал должен показать вам порядок вызовов. –
@vadian мой массив имеет более 100 вопросов. Но мне нужно всего 5 строк в моем TableView. – user5184878