我想实现一个用户点击profileImage的函数,如果传入正确的profileId,它们将被发送到正确的profileView。
问题:当点击当前的profileImage时,我总是会获得另一个主机的配置文件,该主机的索引距离当前主机不远。这不清楚所以我会用图片来证明我的问题。
屏幕1:
点击第一张个人资料图片
屏幕2:
获取人2的个人资料
为了让ProfileViewController知道它需要显示什么配置文件,我在准备segue函数中传递了profileId。
代码:
抓住ProfileId:
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let sectionHeaderView : HeaderTableViewCell = tableView.dequeueReusableCellWithIdentifier("SectionHeaderCell") as! HeaderTableViewCell
let event : PFObject = self.objects![section] as! PFObject
let user : PFUser = event["hostUser"] as! PFUser
let hostID : String = user.objectId!
hostId = hostID
return sectionHeaderView
}
*将profileId传递给下一个ViewController:*
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "feedToEvent"){
let destinationViewController = segue.destinationViewController as! EventViewController
destinationViewController.eventID = eventId
destinationViewController.eventHost = hostId
}
思想
事件ID传递正常,它只是问题的profileId。为了获取eventId,我使用cellForRowAtIndexPath函数而不是viewForHeaderInSection。那是什么原因?对解决方案的任何建议都会很棒!
答案 0 :(得分:1)
我会在标题中打印出您为用户设置的配置文件ID,然后打印出用于填充控制器的配置文件。验证它们是否相同。
如果要将主机或事件存储在数组中,请确保由于0索引而没有逐个错误。
也许存储eventId可能更容易,然后从Parse表中的事件对象中查找主机ID?
如果此表上有多个部分,则很可能只会使用表中的最后一个ID设置hostId。如果您单击的那个与保存的最后一个不同,您可能每次都会加载相同的配置文件。
一个技巧可能是将按钮上的标记设置为要在其触发时加载的主机配置文件的ID。因此,在按钮处理程序中,您可以将id设置为sender.tag值,并始终加载正确的配置文件。如果它不是数字,您可以使用AccessibilityIdentifiers