У меня есть сомнения, как поддерживать два табличных представления и один контроллер представления в сегментированном контроллере. В segment=0
я хочу отобразить первое табличное представление, в segment=1
отобразить второе табличное представление и segment=2
отобразить один контроллер представления, возможно ли это?
Можно ли поддерживать два табличных представления и один контроллер представления в сегментированном контроллере?
Ответы (4)
да. это возможно. Есть два способа.
- Используйте одно табличное представление. И на основе сегмента измените значения таблицы.
- Используйте два настраиваемых класса tableview и настраиваемые методы Protocal/delegate для управления событиями.
Вам действительно не нужно иметь 2 Tableview
s. На основе выбора сегмента вызовите [tableview reloaddata]
с вашими данными, что отображать в этом разделе сегмента. Это экономит много усилий и манипуляций.
Я думаю, что scrollView может помочь вам решить вашу проблему:
Просто добавьте два tableViews в scrollView и используйте метод segmentedController, чтобы установить scrollView contentOffset.x
Точно так же вы можете добавить ViewController в scrollView после двух tableView и прокрутить его, щелкнув сегмент == 2
Надеюсь, что мой совет вам поможет :)
Независимо от того, используете ли вы одно или несколько табличных представлений, основная идея заключается в обработке события выбора.
Если ваш сегментированный элемент управления создан в раскадровке, вы можете использовать выход @IBAction, в качестве альтернативы вы можете использовать синтаксис addTarget.
e.g:
mySegmentedControl.addTarget(self, #selector(myHandlerMethod(_:), for: .valueChanged)
где метод обработчика выглядит примерно так:
(первый случай)
@IBAction func myHandlerMethod(_ sender: UISegmentedControl) {
}
(второй случай)
@objc func myHandlerMethod(_ sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 1 {
// handle your table view reloading or switching between first and second table views.
} else {
// otherwise, do something else
}
}
Некоторые дополнительные мысли:
Я бы согласился с другими в использовании одного табличного представления и предоставлении ему другого набора данных. Вы можете использовать разные подклассы UITableViewCell для представления ваших данных, если формат содержимого между вашими наборами данных отличается по структуре и значению.
Возможно, также стоит изучить использование контроллеров дочерних представлений вместо простых представлений/табличных представлений. Таким образом, вы можете инкапсулировать логику, относящуюся к каждой конкретной сцене, которую вы хотите представить внутри контроллера представления, и управлять ею независимо.