ViewController или UIView должны быть под контролем? - PullRequest
0 голосов
/ 12 февраля 2019

Итак, у меня есть 'ListViewController', у которого есть подпредставление, называемое 'ListView'

ListView - это главное представление, которое содержит все оставшиеся подпредставления.

Внутри listView есть подпредставление, называемое PhotoView.и внутри него есть кнопка UIB, которая переключает ограничения PhotoView, изменяя размеры на основе произвольных значений.

Иерархия выглядит следующим образом:

ListViewController <- ListView <- PhotoView

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

Мой вопрос: кто должен отвечать за функцию «изменения размера»?Насколько я понимаю, viewController, как правило, должен обрабатывать основные функции, которые находятся внутри него, относящиеся к его подпредставлениям.

Однако в этом случае он обрабатывается внутри подпредставления подпредставления PhotoView.Должен ли я использовать протоколы, чтобы сохранить его в ListViewController?PhotoView(Protocol) -> ListView(Protocol) -> ListViewController?

Это правильный метод?Или есть более эффективный способ обработки subview функций?

Спасибо, ребята

1 Ответ

0 голосов
/ 13 февраля 2019

Если вы переместите все логики в ListViewController, все очень просто, поскольку вы можете назначить любой UIControl в VC:

 class ListViewController : UIViewController{
       @IBOutlet var goButton: UIButton!    //In the DetailView
       @IBOutlet var photoView: PhotoView!
       @IBOutlet var detailView: DetailView!
// MARK: --
     @IBAction func testCommand(_ sender: Any){
          PhotoView.backgroundColor = UIColor.red
      detailView.backgroundColor  = UIColor.red
     }


 // MARK: --
     @IBAction func photoViewCommand(_ sender: Any){
          PhotoView.backgroundColor = UIColor.red
      detailView.backgroundColor  = UIColor.red
     }


// MARK: --
   @IBAction func detailViewCommand(_ sender: Any){
          PhotoView.backgroundColor = UIColor.red
         detailView.backgroundColor  = UIColor.red
     }

 }

Вам даже не нужно знать ListView.Использование IB может назначать все UIViews, не только прямые дочерние элементы, но и все деревья подпредставлений, включая UIControls, такие как кнопки и метки, если они находятся в сцене того же UIViewController и их методы находятся в том же VC, а не в других разделенных представлениях.

Если у вас есть код представлений, вы можете легко переместить его в ВК.Всего один класс, чтобы контролировать все.Если вам нужно знать, кто есть кто.Добавление Mark достаточно для небольших файлов.

...