ARTICLE AD BOX
In SwiftUI, .width(min:ideal:max:) doesn't automatically make the column scrollable or dynamically resize beyond the parent container.
.infinity in max means take all available space, not grow beyond parent if content is longer.
Your Table is inside a VStack constrained by .frame(width: 400), so SwiftUI assumes the table cannot exceed 400 points width. Hence, no horizontal scrolling occurs.
You need to wrap the Table in a scroll view with .horizontal enabled & remove the fixed .frame(width:) (or let the scroll view handle overflow). Optionally you can set a minimum width for the column to let it shrink/expand naturally.
Your final code will be
import SwiftUI import Foundation struct myItem: Identifiable { let id = UUID() let myItemStr: String } struct ContentView: View { @State private var myTableTitleStr: String = "My Items" @State private var selectedItemID: myItem.ID? @State private var myItemsArray = [ myItem(myItemStr: "Item01"), myItem(myItemStr: "Item02"), myItem(myItemStr: "Item03") ] var body: some View { VStack { ScrollView([.horizontal, .vertical]) { // <- this will enable scrolling Table(myItemsArray, selection: $selectedItemID) { TableColumn(myTableTitleStr, value: \.myItemStr) .width(min: 50, ideal: 350) // remove .infinity } } .frame(height: 300) // limit height if needed Button("Add Long String") { let myLongString = "my very very very very very very very very very very very very very very very very very long string" myItemsArray[0] = myItem(myItemStr: myLongString) } } .padding() } }31.8k46 gold badges170 silver badges286 bronze badges
Explore related questions
See similar questions with these tags.

