В чем разница между List и ForEach в SwiftUI? - PullRequest
6 голосов
/ 11 июня 2019

Я знаю, что SwiftUI в настоящее время не поддерживает регулярные циклы, но вместо этого предоставляет что-то, называемое ForEach, но в чем разница между этим и списком?

1 Ответ

12 голосов
/ 11 июня 2019
  • ForEach - это представление, которое позволяет передать коллекцию данных инициализатору, а затем создать несколько «подпредставлений» из предоставленного вами замыкания.Он не имеет никакой семантики того, как будут организованы представления.

    Пример:

    ForEach(1...5) { row in
        Text("Row \(row)")
    }
    

    создаст эквивалент off

    Text("Row 1")
    Text("Row 2")
    Text("Row 3")
    Text("Row 4")
    Text("Row 5")
    

    , завернутый в одинконтейнерное представление.

  • List - это представление, которое может составлять несколько представлений вместе, но не обязательно представления одного и того же типа.Вы можете просто добавить несколько представлений без цикла.

    Пример 1:

    List {
        Image("avatar")
        Text("Title")
        Button(action: {
            print("Button tapped!")
        }) {
            Text("Energize!")
        }
    }
    

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

    Пример 2:

    List(1...5) { row in
        Text("Row \(row)")
    }
    

    Список имеет особый вид в зависимости от платформы.Например, в iOS список будет отображаться как табличное представление и вставлять разделительные линии между его вертикально расположенными представлениями.

    Вы можете использовать ForEach представления внутри List представлений, чтобы иметь как динамический, так и статический контент - aочень мощная функция SwiftUI .

    Пример 3:

    List {
        Text("Food")
        ForEach(meals) { meal in
            Text(meal.name)
        }
        Text("Drinks")
        ForEach(drinks) { drink in
            Text(drink.name)
        }
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...