Как обернуть текст в навигационной кнопке SwiftUI? - PullRequest
1 голос
/ 27 июня 2019

Тип Text SwiftUI имеет модификатор, который позволяет переносить текст, если текст слишком длинный, чтобы помещаться горизонтально внутри его контейнера.Чтобы добиться переноса текста, просто передайте nil в качестве аргумента модификатору lineLimit:

Text("This text is too long to fit horizontally within its non-NavigationButton container. Therefore, it should wrap to fit, and it does.")
    .font(.body)
    .lineLimit(nil)

Вышеуказанное работает как положено, за исключением случаев использования внутри SwiftUI NavigationButton.Все Text экземпляры, которые я вложил в NavigationButton экземпляры, не переносятся:

NavigationButton(destination: DestinationView()) {
    Text("This text is too long to fit horizontally within its NavigationButton container. Therefore, it should wrap to fit, but it does not.")
        .font(.body)
        .lineLimit(nil)
}

Есть ли что-то, чего мне не хватает в приведенном выше коде, что позволило бы Text экземплярам переносить в NavigationButton instances?

Изменить, чтобы добавить больше контекста:

Исходное представление - List, заключенное в NavigationView.List содержит экземпляры MeasurableItemsListItem, которые заключены в NavigationButton экземпляры, которые инициируют переход к дополнительному представлению, добавляемому в стек навигации:

struct MeasurableItemsList : View {

    private let measurableItems = MeasurableItem.allCases

    var body: some View {
        NavigationView {
            List(measurableItems.identified(by: \.self)) { measurableItem in
                NavigationButton(destination: DosableFormsList(measurableItem: measurableItem)) {
                    MeasurableItemsListItem(measurableItem: measurableItem)
                }
            }
        }
    }
}

Каждый элемент списка, заключенный вNavigationButton изготовлен из следующей структуры:

struct MeasurableItemsListItem : View {

    let measurableItem: MeasurableItem

    var body: some View {
        Text(measurableItem.name)
            .font(.body)
            .foregroundColor(.primary)
            .lineLimit(nil)
    }

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