是否可以颠倒tableView的顺序.我已经搜索了很多解决方案,但所有结果都不是我想要实现的解决方案.他们都建议滚动到表的最后一个位置scrollToRowAtIndexPath并反向填充数据.但是,如果表内容是动态的,并且在某些情况下并非所有单元都有数据,则这不起作用.例如,在普通的tableView中,顺序是:
滚动方向
v
V.
期望的结果是:
滚动方向
^
^
在这个例子中,如果我使用建议的方法scrollToRowAtIndexPath并使用对象数组的长度,我只会从顶部获得第三个单元格.并最终得到这样的东西:
意外结果:
滚动方向
v
V.
任何帮助都会非常感谢你.
将内容添加到ListView时,我希望它自动向下滚动。
我正在使用SwiftUI“列表”和“ BindableObject”作为控制器。新数据将追加到列表中。
List(chatController.messages, id: \.self) { message in
MessageView(message.text, message.isMe)
}
Run Code Online (Sandbox Code Playgroud)
我希望列表向下滚动,因为我将新数据追加到消息列表中。但是,我必须手动向下滚动。
我想向后加载我的tableview,这意味着tableView从底部加载并向上滚动以查看更多内容.
首先,我尝试反转dataSource数组.内容相反,但仍然从顶部加载,用户必须向下滚动才能看到更多内容.
然后我尝试从viewWillAppear的底部加载tableView:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if (self.conversationTableView.contentSize.height > self.conversationTableView.frame.size.height) {
let offset = CGPoint(x: CGFloat(0), y: CGFloat(self.conversationTableView.contentSize.height - self.conversationTableView.frame.size.height))
self.conversationTableView.setContentOffset(offset, animated: true)
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这种尝试不起作用,因为我异步下载图像(我正在使用NSTextAttachment,它在每个单元格中填充我的UITextView).每当我的占位符被替换为真实下载的图像时,它会导致tableView内容偏移移位(占位符的图像高度几乎总是小于下载图像的高度).因此,以这种方式设置contentOffset不起作用.
如何从底部加载tableView并向上滚动以查看更多内容?
随着reverted List在 SwiftUI 中继续研究How to make List reversed in SwiftUI。
在恢复列表中获得奇怪的间距,看起来像额外的 UITableView 页眉/页脚。
struct ContentView: View {
@State private var ids = ["header", "test2"]
@State private var text = "text"
init() {
UITableView.appearance().tableFooterView = UIView()
UITableView.appearance().separatorStyle = .none
}
var body: some View {
ZStack (alignment: .bottomTrailing) {
VStack {
List {
ForEach(ids, id: \.self) { id in
Group {
if (id == "header") {
VStack {
Text("Test")
.font(.largeTitle)
.fontWeight(.heavy)
Text("header")
.foregroundColor(.gray)
}
.scaleEffect(x: 1, y: …Run Code Online (Sandbox Code Playgroud) ios ×3
swift ×3
iphone ×2
swiftui ×2
uitableview ×2
autoscroll ×1
ios8 ×1
listview ×1
objective-c ×1