【问题标题】:Passing cell name to next to View Controller将单元格名称传递到 View Controller 旁边
【发布时间】:2016-05-07 19:25:07
【问题描述】:

首先,感谢您阅读我的问题!

所以,我遇到了一些关于让我的单元格名称传递到下一个视图的问题。现在它会传递它,但它只会显示最近加载的单元格。

这是它现在的编程方式:

var passName = ""
var passAuthor = ""
var passLikes = 0
var passDescrip = ""

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)!

    // Configure the PFQueryTableView
    self.parseClassName = "Location"
    self.textKey = "Name"
    self.pullToRefreshEnabled = true
    self.paginationEnabled = true
    self.objectsPerPage = 5

}
override func queryForTable() -> PFQuery {
    let query = PFQuery(className: "Location")
    query.orderByAscending("Name")
    return query
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> CustomPFTableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! CustomPFTableViewCell!

    print("Loading Parse Database Files...")
    // Extract values from the PFObject to display in the table cell
    if let name = object?["Name"] as? String {
        cell?.nameTextLabel?.text = name
        passName = name
        print("Loading " + name)
    }
    if let author = object?["authorName"] as? String {
        cell?.authorTextLabel?.text = author
        passAuthor = author
    }
    if let likes = object?["Likes"] as? Int {
        let stringVal = String(likes)
        cell?.numLikes.text = stringVal
        passLikes = likes
    }
    if let descrip = object?["Description"] as? String {
        passDescrip = descrip

    }
    let initialThumbnail = UIImage(named: "Unloaded")
    cell.customFlag.image = initialThumbnail
    if let thumbnail = object?["imageCover"] as? PFFile {
        cell.customFlag.file = thumbnail
        cell.customFlag.loadInBackground()


    }
    print("Finished loading!")


    return cell
}

//Original prepareForSegue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if (segue.identifier == "toDetailScene") {

        // initialize new view controller and cast it as your view controller
        let viewController = segue.destinationViewController as! DetailViewController




        viewController.tripName = passName
        viewController.tripAuthor = passAuthor
        viewController.tripLikes = passLikes
        viewController.tripDescrip = passDescrip
    }
}

稍后,下一个视图控制器通过以下简单代码接收它: @IBOutlet 弱变量名称:UILabel! @IBOutlet 弱变量喜欢:UILabel! @IBOutlet 弱变量作者:UILabel! @IBOutlet 弱变量描述:UITextView!

var currentObject : PFObject?

var tripName = ""
var tripAuthor = ""
var tripLikes = 0
var tripDescrip = ""

override func viewDidLoad() {
    super.viewDidLoad()



    //Hookup
    name.text = tripName
    likes.text = String(tripLikes)
    author.text = tripAuthor
    descrip.text = tripDescrip

}

我需要修复它,这样它就不会一直尴尬地显示错误的文章/信息。

如果我可以简单地提取他们单击的正确单元格,那么我可以从每个标签中提取文本吗?那么我怎样才能得到正确的细胞呢?

顺便说一句:它只是从单元格到带有 show segue 的视图控制器的下一个视图控制器。 (在导航控制器中)

非常感谢!

【问题讨论】:

  • 如果你直接从单元格触发segue,我想你会发现prepareForSegue中的sender是被点击的单元格
  • 目前还不清楚帖子中发生了什么或您在问什么......但是当他们点击一个单元格时,cellForRowAtIndexPath 将确保处理该点击的行
  • segue 最好是从视图控制器到目标视图控制器,而不是从单元格。这可能会有所帮助

标签: ios xcode swift uitableview parse-platform


【解决方案1】:

@Paulw11 在评论中回答了这个问题,它解决了我的问题。

发件人:AnyObject?允许我添加:

let cell = sender as! CustomPFTableViewCell

然后我所要做的就是更新方法以直接从单元格中连接文本字段的新值。

代码如下:

let viewController = segue.destinationViewController as! DetailViewController         
let cell = sender as! CustomPFTableViewCell

        viewController.tripName = cell.nameTextLabel.text!
        viewController.tripAuthor = cell.authorTextLabel.text!
        viewController.tripLikes = Int(cell.numLikes.text!)!

【讨论】:

    猜你喜欢
    • 2019-06-15
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多