gpt4 book ai didi

ios - 如何将多个选定的 TableView 单元格数据传输到 Swift 中的下一个 View Controller ?

转载 作者:行者123 更新时间:2023-11-30 13:05:02 25 4
gpt4 key购买 nike

所以我已经为此准备了很多代码,但我遇到了一些错误:

我当前的代码是:

func createGroupMessagesButton() {
dismissViewControllerAnimated(true) {

let user = self.tableView.indexPathsForSelectedRows
self.messagesController2?.showChatLogController(user)
}
}

上面的代码旨在关闭当前 View Controller ,并将所有数据传递到下一个 View 上的函数中。该函数代码为:

func showChatLogController(user: User) {
let chatLogController = ChatLogController(collectionViewLayout: UICollectionViewFlowLayout())
chatLogController.user = user
chatLogController.hidesBottomBarWhenPushed = true
navigationController?.pushViewController(chatLogController, animated: true)

}

然后,上面的函数会将传递到上面函数的数据推送到另一个 Controller 。

唯一的问题是,当我第一次尝试传递数据时,我收到一条错误消息:

无法转换 [NSIndexPath] 类型的值?到预期的类型参数 User

This is a picture of the error

PS:User是我创建的一个数组。

这是我的用户数组:

类用户:NSObject {

var id: String!
var fullName: String!
var email: String!
var userPhoto: String!
var homeAddress: NSArray!
var schoolOrWorkAddress: String!

}

总结一下我的问题,我在传递多个选定表格 View 单元格的数据时遇到问题。

如果您想知道我如何传递一个选定的单元格数据,方法如下:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if tableView.allowsMultipleSelectionDuringEditing != true {
dismissViewControllerAnimated(true) {
let user = self.users[indexPath.row]
self.messagesController?.showChatLogController(user)
}
}

}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCellWithIdentifier(cellId, forIndexPath: indexPath) as! UserCell

let user = users[indexPath.row]

cell.textLabel?.text = user.fullName
cell.detailTextLabel?.text = user.email

if let userPhoto = user.userPhoto {

cell.profileImageView.loadImageUsingCacheWithUrlString(userPhoto)

}

return cell
}

最佳答案

NSIndexPath 是一个用于获取特定部分中特定行的路径的构造。

self.tableView.indexPathsForSelectedRows 返回选定行的列表,因此您必须循环遍历它们并使用 row 属性来查找完整用户列表中的相应用户。另请注意,您很可能希望传递 UserArray 而不仅仅是一个。

这是我头脑中的概念代码,它应该引导您走向正确的方向。

func createGroupMessagesButton() {
dismissViewControllerAnimated(true) {

let selectedUserRows = self.tableView.indexPathsForSelectedRows
var selectedUsers = [User]
for let selectedUserRow in selectedUserRows {
selectedUsers.append(self.users[selectedUserRow.row]!)
}
self.messagesController2?.showChatLogController(selectedUsers)
}
}

关于ios - 如何将多个选定的 TableView 单元格数据传输到 Swift 中的下一个 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39493262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com