Как показать RadListView на iOS

У меня такой код:

<GridLayout row = "7" col = "0" colSpan = "3" rows = "*" cols = "*">
     <RadListView [items] = "sourcesOptions" height = "100%">
           <ng-template tkListItemTemplate let-item = "item">
                 <StackLayout orientation = "horizontal">
                       <Switch [checked] = "true" class = "switch"></Switch>
                       <Label [text] = "item.label" textWrap = "true" marginTop = "15"></Label>
                 </StackLayout>
           </ng-template>
           <ListViewGridLayout tkListViewLayout itemHeight = "200" scrollDirection = "Vertical" spanCount = "2"></ListViewGridLayout>
     </RadListView>
</GridLayout>

Он работает на Android, но на iOS ничего не показывает.

Примечание

Я не знаю, может ли это быть связано с проблемой, но я получаю предметы из службы отдыха.

Любая помощь приветствуется !!

Площадка для вышеприведенного кода работает как ожидалось play.nativescript.org/?template=play-ng&id=Es3fBf

Nick Iliev 27.09.2018 14:46

Проверьте, есть ли у вас 8 строк в родительском GridLayout (row = "7" col = "0")

Nick Iliev 27.09.2018 14:48

@NickIliev Я проверил пример игровой площадки, и он работает. Не знаю, происходит ли это из-за того, что я получаю вещи из службы отдыха. И да, у меня в родительской сетке 8 строк, на Android работает корректно

JuanF 27.09.2018 15:13
it happens because I get the items from a rest service - вот и все .. на iOS, когда элементы поступают асинхронно, вам нужно установить высоту шаблона элемента (используя itemHeight - см. Здесь docs.telerik.com/devtools/nativescript-ui/Controls/NativeScr‌ ipt /…)
Nick Iliev 27.09.2018 15:16

Или напрямую назначьте высоту для родительского макета вашего шаблона элемента (в вашем случае StackLayout)

Nick Iliev 27.09.2018 15:17

@NickIliev Вы дали мне идею, как это исправить, проблема была в высоте родительского макета RadListView (GridLayout). Я опубликовал ответ с кодом, исправляющим мою проблему. Спасибо большое за вашу помощь!

JuanF 27.09.2018 16:38
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
1 073
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуйте установить значение высоты для компонента RLV, например height = "100%", чтобы он заполнил родительский элемент. iOS не выполняет автоматические макеты, как это делает Android, поэтому вы сталкиваетесь с этим :)

Вы не предоставили определение rows или columns для вашего GridLayout. RadListView, скорее всего, появится, если вы это сделаете:

<GridLayout row = "7" col = "0" colSpan = "3" rows = "*" columns = "*">

Расширяя это, на основе разметки Qs вы даже можете использовать StackLayout здесь и отбросить Grid.

Brad Martin 26.09.2018 19:03

Ян и @Brad Я отредактировал вопросы с учетом предложенных вами изменений, но он по-прежнему ничего не показывает. Я попробовал предложение StackLayout Брэда с тем же результатом

JuanF 26.09.2018 22:30

Не совсем то, что я сказал, хотя - ставьте высоту на RLV, а не на родительский. Таким образом, iOS скажет: «О, сделайте этот список 100% родительским, которым является эта сетка» ?

Brad Martin 27.09.2018 23:38
Ответ принят как подходящий

Проблема заключалась в высоте, когда элементы являются асинхронными, в этом случае мне нужно было вручную установить высоту для родительского макета компонента RadListView (в моем случае GridLayout).

Это не сработало, если я установил высоту в процентах (100%), это должно было быть фиксированное число, это было очень неудобно, потому что количество элементов не всегда одинаково, поэтому я создал функцию для установки высоты в соответствии с с количеством полученных предметов.

Это код, который исправил проблему:

<GridLayout row = "7" col = "0" colSpan = "3" rows = "*" cols = "*" [height] = "setHeight()">
     <RadListView [items] = "sourcesOptions">
          <ng-template tkListItemTemplate let-item = "item">
               <StackLayout orientation = "horizontal">
                    <Switch [checked] = "true" class = "switch"></Switch>
                    <Label [text] = "item.label" textWrap = "true" marginTop = "15"></Label>
               </StackLayout>
          </ng-template>
          <ListViewGridLayout tkListViewLayout itemHeight = "70" scrollDirection = "Vertical" spanCount = "2"></ListViewGridLayout>
     </RadListView>
</GridLayout>

Как вы ее решили?

Wuilmer Medrano 20.12.2020 12:51

Другие вопросы по теме