Как работает «условный рендеринг» в Swift / Xcode? - PullRequest
0 голосов
/ 27 ноября 2018

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

Как работает концепция условного рендеринга в Xcode / Swift?Поскольку вы, очевидно, создаете пользовательский интерфейс на раскадровке, я не знаю, как условно отображать элементы.

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

Ответы [ 3 ]

0 голосов
/ 27 ноября 2018

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

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

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

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

Раскадровки не являютсяединственный способ создать пользовательский интерфейс, и они также намного более гибки, чем просто статическая коллекция элементов.Раскадровка по сути представляет собой набор связанных сцен, где каждая сцена является шаблоном для отображения содержимого.Но ваш код может корректировать объекты в сцене, в том числе скрывать или показывать их, изменять их положение и добавлять виды, удаляющие руды.Поэтому, если вы хотите, вы можете создать сцену с отдельной таблицей для каждого из элементов в вашем списке, а затем просто настроить видимость различных таблиц в соответствии с тем, что выбрано.Или у вас может не быть таблиц вообще, и ваш код может создать такую ​​на лету и вставить ее в представление.

Короче говоря: вы слишком много думаете о том, как работают раскадровки.Начните читать о о том, как работают контроллеры представления , и вскоре вы гораздо лучше поймете, какой тип контроля над пользовательским интерфейсом у вас есть.

0 голосов
/ 27 ноября 2018

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

Вы бы написали код - предположительно, код Swift, поскольку вы использовали тег .

Давайте сделаем это еще болеебетон.У вас есть Bookcase объект, который имеет массив Shelf, а каждый Shelf имеет массив Book.

Если вы используете раскадровку, вы можете иметь ShelfControllerсцена в вашей раскадровке с одним представлением таблицы, чтобы отобразить Book s в одном Shelf.Вы также можете иметь BookcaseController сцену с (скажем, стековым представлением).Представление стека не имеет подпредставлений, потому что при проектировании раскадровки вы не знаете, сколько полок вам нужно отобразить.

Затем в коде Swift, когда BookcaseController задается BookcaseВ объекте модели BookcaseController создает сценарий ShelfController один раз для каждого Shelf в Bookcase.Он добавляет каждый ShelfController в качестве дочернего контроллера представления и добавляет каждое представление ShelfController (представление таблицы) в качестве упорядоченного подпредставления своего (BookcaseController) представления стека.

0 голосов
/ 27 ноября 2018

Краткий ответ: «Это не так».Это не так, как работает iOS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...