2016-03-05 3 views
0

Чтобы объяснить, какую проблему у меня возник, я быстро объясню сценарий. У меня есть синтезатор, который я создаю, который имеет несколько «контрольных представлений». Один вид управления может быть 4 вертикальными ползунками, а другой - одной большой матрицей или что-то в этом роде. Итак, скажем, у меня есть контрольные точки 1-4. Кроме того, у меня есть два основных раздела (которые представляют собой только представления держателей), которые могут содержать один из четырех видов управления. В любой момент времени sectionA может иметь controlView4, а sectionB может иметь controlView2. Это прекрасно работает.Тот же UIView в двух местах сразу?

Проблема с этим SectionA не может иметь ControlView1, а SectionB имеет ControlView1 одновременно. Это приводит к нежелательному поведению. Например, если в настоящее время имеет SectionAControlView1 в то время как SectionB имеет ControlView4 (который будет обернуть вокруг ControlView1 на следующей тумблер), чем в следующий раз я переключить SectionB «s активный ControlView, SectionA» s ControlView просто исчезнет. (Предположительно потому, что UIKit неявно удаляет его из SectionA «S подвидов, когда я добавляю его в качестве SectionB» подвида s.)

Итак, есть некоторое поведение по умолчанию UIView, что не является идеальным для этой модульной схемы я хотел бы реализовать , Это, как говорится, есть способ достичь того, что я хочу, не отклоняясь далеко от лучших практик iOS и разумного дизайна кода?

ответ

0

Во-первых, я бы хотел, чтобы у каждого типа просмотра был отдельный тип контроллера. Затем, каждый раз, когда мне нужен вид в разделе, я бы создал его соответствующий контроллер и захватил бы эту область контейнера. Если четыре секции отображают несколько копий одного и того же представления, каждый из них имеет свой собственный контроллер, чтобы держать их организованными.

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

+0

спасибо. ключ отнимает у меня от этого, мне нужно больше абстракции модели в моей архитектуре, чтобы даже задуматься о том, что я хочу. Ключевыми частями, которые я думаю, являются tabBarVC для выбора между различными VC, такими как MatrixVC a 4SlidersVC, каждый из которых имеет представление и модель для хранения состояния, наконец, с моделями, взаимодействующими с состоянием синтезатора звука синтезатора. хотя этот последний шаг еще не ясен. –

+0

Звучит неплохо. С гибкостью, которую вы описываете, последнее, что вам нужно, - это передача состояния от контроллера к контроллеру. –