Имам съмнения как да поддържам два изгледа на таблици и един контролер за изглед в сегментиран контролер. В segment=0
искам да покажа първия изглед на таблица, в segment=1
да покажа втори изглед на таблица и segment=2
да покажа един контролер за изглед, възможно ли е?
Възможно ли е да поддържате два изгледа на таблици и един контролер на изглед в сегментиран контролер?
Отговори (4)
да възможно е. Има два начина.
- Използвайте един изглед на таблица. И въз основа на сегмента, променете стойностите на табличния изглед.
- Използвайте два персонализирани класа за изглед на таблица и персонализирани протоколни/делегирани методи за управление на събитията.
Мисля, че scrollView може да ви помогне да решите проблема си:
Просто добавете двата tableView към scrollView и използвайте метода на segmentedController, за да зададете contentOffset.x на scrollView
По същия начин можете да добавите 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, за да представите вашите данни, ако форматът на съдържанието между вашите набори от данни е различен по структура и значение.
Може също така да си струва да разгледате използването на дъщерни контролери за изглед вместо обикновени изгледи/изгледи на таблици. По този начин можете да капсулирате логиката, свързана с всяка конкретна сцена, която искате да представите в контролер за изглед, и да я управлявате независимо.