Възможно ли е да поддържате два изгледа на таблици и един контролер на изглед в сегментиран контролер?

Имам съмнения как да поддържам два изгледа на таблици и един контролер за изглед в сегментиран контролер. В segment=0 искам да покажа първия изглед на таблица, в segment=1 да покажа втори изглед на таблица и segment=2 да покажа един контролер за изглед, възможно ли е?


person User558    schedule 21.01.2016    source източник
comment
да, възможно е, използвайте тагове за всяко нещо, покажете   -  person Anbu.Karthik    schedule 21.01.2016
comment
Вместо да имате две таблици, имайте два източника на данни за двата сегмента, което ще спести много работа и време   -  person iAnurag    schedule 21.01.2016


Отговори (4)


да възможно е. Има два начина.

  1. Използвайте един изглед на таблица. И въз основа на сегмента, променете стойностите на табличния изглед.
  2. Използвайте два персонализирани класа за изглед на таблица и персонализирани протоколни/делегирани методи за управление на събитията.
person RJV Kumar    schedule 21.01.2016

не можете да върнете 2 стойности в едно връщане, но можете да затворите стойностите в масив и след това да върнете.
person Bharath Vankireddy    schedule 21.01.2016

Мисля, че scrollView може да ви помогне да решите проблема си:

Просто добавете двата tableView към scrollView и използвайте метода на segmentedController, за да зададете contentOffset.x на scrollView

По същия начин можете да добавите ViewController към scrollView, последван от двата tableView и да превъртите до него, като щракнете върху сегмента == 2

Надявам се моят съвет да ви помогне :)

person TruthSeeker    schedule 21.01.2016

Независимо дали използвате един или няколко таблични изгледа, основната идея е да обработите събитието за избор.

Ако вашият сегментиран контрол е създаден в разкадровката, можете да използвате изхода @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, за да представите вашите данни, ако форматът на съдържанието между вашите набори от данни е различен по структура и значение.

  • Може също така да си струва да разгледате използването на дъщерни контролери за изглед вместо обикновени изгледи/изгледи на таблици. По този начин можете да капсулирате логиката, свързана с всяка конкретна сцена, която искате да представите в контролер за изглед, и да я управлявате независимо.

person Alexei    schedule 30.07.2019