2016-02-22 2 views
0

Я создал таблицу с тремя секциями, каждая секция должна обрабатывать массив животныхSwift 2 - UITableView с мульти секциями

вар firstAnimals = Animal вара secondAnimals = животные и так далее

У меня возникли проблемы в функция cellForRowAtIndexPath, я хочу, чтобы она вставляла элементы массивов в соответствии с правой частью. Я пробовал это, но он не работает с массивом. Пожалуйста помоги!

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! myCell 
    if indexPath.section == 0 { 
     cell.title.text = firstAnimals[indexPath.row] 

    } else if indexPath.section == 1 { 
     cell.title.text = secondAnimals[indexPath.row] 

    } else { 
     cell.title.text = thirdAnimals[indexPath.row] 
    } 


    return cell 
} 
+1

Что вы подразумеваете под «это не работает с массивом»? Поскольку код сейчас, я не вижу массив нигде. – yesthisisjoe

+0

@yesthisisjoe эй я исправил его, пожалуйста, помогите :) – anasganim

ответ

0

рекомендуемый способом является использование Вложенного массива

let animals = [[firstAnimal1, firstAnimal2, firstAnimal3], 
       [secondAnimal1, secondAnimal2, secondAnimal3], 
       [thirdAnimal1, thirdAnimal2, thirdAnimal3]] 

Тогда cellForRowAtIndexPath может выглядеть

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! myCell 
    let animalSection = animals[indexPath.section] 
    let animal = animalSection[indexPath.row] 
    cell.title.text = animal.name 

    return cell 
} 

В качестве альтернативы использовать массив с именами секций и словарь с массивом животных для каждого названия раздела соответственно. Массив имен разделов также может использоваться в качестве имен заголовков раздела.

+0

Это хорошая идея, @vadian, одна вещь, есть способ, которым я могу сделать что-то вроде этого: пусть животные = [[firstAnimal], [secondAnimal], [thirdAnimal ]], Я имею в виду массив передачи, Xcode не позволит мне это сделать. Вы знаете прогулку? – anasganim

+0

Конечно, вы можете это сделать, но в чем цель массива, содержащего только один объект? – vadian

+0

Нет, я имею в виду пассивные массивы, извините, вот так: let animals = [firstAnimals, secondAnimals, thnrdaanimals] Как я могу это сделать? – anasganim

Смежные вопросы