2016-03-18 4 views
0

Я хочу создать навигационный список.ios UITableViewController элементы с дочерними элементами

У меня есть UITableViewController, и я хотел бы, чтобы, если на ячейку щелкнул дочерний элемент ячейки, где отображается в UITabeViewController, и появится обратная кнопка.

В настоящее время для тестов я делать/сделал это:

var anz = 10 
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return anz 
} 

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    if anz<10 { 
     navigationController?.popToRootViewControllerAnimated(true) 
    } 
    anz = 5 
    self.tableView.reloadData() 
} 

Но нет назад кнопок (конечно).

Так оно и должно выглядеть следующим образом:

enter image description here

Спасибо.

+0

Что вы подразумеваете под ребенком клетки? – iMuzahid

+0

Структура данных, такая как категория catergory, может иметь «дочернюю» -категорию – Flo

+0

Вы хотите получить обратную кнопку в ячейке или в панели навигации? - этот код в классе контроллера вида? является ли это viewcontroller дочерним элементом навигационного контроллера? пожалуйста, укажите больше кода. – dOM

ответ

0

Упование вы хотите сделать складной/расширяемый вид таблицы.

Вы можете обратиться http://www.appcoda.com/expandable-table-view/

+0

Спасибо u! Но это не то, что я ищу, каждая категория может иметь категорию x, и это может иметь x дочерних категорий, и это может ... и т. Д. ... – Flo

+0

Установив файл plist для n номеров корневых элементов, вы можете управлять вашей категории и подкатегории и так далее. – Hasya

+0

Будет ли кнопка «назад», если категория выбрана? – Flo

0

Я использовал такое расширение в моем проекте для обработки навигации обратно кнопки

extension UIViewController { 
    var shouldShowBackButton: Bool { 
     get { 
      return navigationController?.viewControllers.indexOf(self) > 0 
     } 
    } 
} 

и в вашем UIViewController ребенка

override func viewDidLoad() { 
    super.viewDidLoad() 

    if shouldShowBackButton { 
     navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "back"), landscapeImagePhone: UIImage(named: "land_back"), style: .Plain, target: self, action: "pop") 
    } else { 
     navigationItem.setHidesBackButton(true, animated: false) 
    } 
} 
+0

Спасибо! Но что это значит: «return navigationController? .viewControllers.indexOf (self)> 0» или как я могу это изменить? – Flo

+0

navigationItem.leftBarButtonItem = UIBarButtonItem (изображение: UIImage (названо: «назад»), landscapeImagePhone: UIImage (имя: «land_back»), стиль:.Обычный, цель: сам, действие: «поп») не показывают ни одной кнопки! – Flo

+0

Не могли бы вы убедиться, что у вас есть ресурс (актив) с именем «назад». это обычная кнопка возврата. вы должны иметь его в случае настройки leftBarButtonItem –

0

вы должны управлять им состояние здесь 1. сначала добавьте кнопку «Назад» на панели навигации и спрячьте ее. 2. когда вы выбираете ячейку таблицы, чем изменяете тег no или увеличиваете счетчик, чтобы управлять состоянием. 3. У супов yo есть 2 массива, вы загружаете первый массив в виде таблицы и когда пользователь выбирает ячейку из представления таблицы, тогда вы увеличиваете тег no и перезагружаете табличное представление в то время, когда вам нужно управлять тегом 2, чтобы загрузить 2-й массив в режиме просмотра таблицы и управление кнопкой «Назад» и ее действие для уменьшения количества.

0

Чтобы вернуться в навигационную панель, вам нужно нажать на контроллер.

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    if anz<10 { 
     navigationController?.popViewControllerAnimated(true) 
    } 
    anz = 5 
     let vc = YourViewController with custom INIT where you can pass anz 
    navigationController?.pushViewController(vc, animated: true) 
} 

Здесь YourViewController ваш текущий контроллер с табличными вы показаны на картинке вида.

+0

Извините, что я действительно новичок в ios, но какой ур означает «YourViewController» – Flo

+0

Ваш класс контроллера класса, в котором у вас есть код выше, который вы упомянули в своем вопросе :) – sanjana

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