【发布时间】:2019-11-26 14:27:21
【问题描述】:
我正在使用 SwiftUI 中的 List。我想在列表中添加拖放行(项目)的功能。在 Swift 中,我们有 UITableView 的 Delegate 和 DataSource 方法,如下所示:
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath;
这些方法在 SwiftUI 中的替代方法是什么?
struct User {
var firstName: String
var lastName: String
}
struct UserRow: View {
var user: User
var body: some View {
Text("\(user.firstName) \(user.lastName)")
}
}
struct ContentView : View {
var body: some View {
let user1 = User(firstName: "Anjali", lastName: "User1")
let user2 = User(firstName: "XYZ", lastName: "User2")
return List {
UserRow(user: user1)
UserRow(user: user2)
}
}
}
【问题讨论】:
-
你看过任何 WWDC 视频吗?例如,第一个名为“介绍 SwiftUI:构建你的第一个应用程序”?他们展示了我的想法(很难说,你的代码转储效果不好)你想要的。 developer.apple.com/wwdc19/204 如果这不是你正在寻找的,请你需要更具体。谢谢,祝你好运!