所以我已经有了很多代码,但是我遇到了一些错误:
我的当前代码是:
func createGroupMessagesButton() {
dismissViewControllerAnimated(true) {
let user = self.tableView.indexPathsForSelectedRows
self.messagesController2?.showChatLogController(user)
}
}
上面的代码用于关闭当前视图控制器,并将所有数据传递到下一个视图的函数中。功能代码是:
func showChatLogController(user: User) {
let chatLogController = ChatLogController(collectionViewLayout: UICollectionViewFlowLayout())
chatLogController.user = user
chatLogController.hidesBottomBarWhenPushed = true
navigationController?.pushViewController(chatLogController, animated: true)
}
然后上面的函数将该数据推送到另一个控制器,该数据传递给上面的函数。
唯一的问题是,当我第一次尝试传递数据时,我收到一条错误,指出:
无法转换[NSIndexPath]类型的值?预期类型参数用户
PS:用户是我创建的数组。
这是我的用户数组:
类用户:NSObject {
var id: String!
var fullName: String!
var email: String!
var userPhoto: String!
var homeAddress: NSArray!
var schoolOrWorkAddress: String!
}
总结一下我的问题,我无法传递多个选定的表格视图单元格的数据。
如果您想知道如何传递一个选定的单元格数据,请按以下方式进行:
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
}
答案 0 :(得分:0)
NSIndexPath
是一个构造,用于获取特定部分中特定行的路径。
self.tableView.indexPathsForSelectedRows
会返回所选行的列表,因此您必须循环遍历它们并使用row
- 属性在完整的用户列表中查找相应的用户。另请注意,您最有可能希望传递Array
User
而不是仅传递一个。{/ p>
这是我头脑中的概念代码,应该引导你走向正确的方向。
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)
}
}