【问题标题】:How to set the topmost cell (first row) of detail view's table view with master view's selected cell content?如何使用主视图的选定单元格内容设置详细视图的表格视图的最顶层单元格(第一行)?
【发布时间】:2015-11-17 04:14:45
【问题描述】:

使用 Swift(带有 Storyboard)和 Parse 开发社交 iPhone 应用程序,用户可以在其中创建帖子并评论帖子,类似于 Facebook iOS 应用程序和其他社交网络应用程序。

该应用有一个初始的主 主页 Feed 页面(显示用户帖子)和一个详细的回复页面(显示用户 cmets)。两者都使用 PFTableViewController 类,并且每个表格视图都有自己的 PFTableViewCell 实现在单独的 swift 文件中作为原型单元格。

我正在尝试将所选帖子单元格的内容(用户名、帖子消息、时间戳等)从主主页 Feed 页面发送到详细回复页面的最顶部单元格(顶部的第一个单元格)表视图)。

我的目标是让它的工作方式类似于 Facebook、Instagram 和 Twitter iOS 应用程序的工作方式 - 每当用户在主提要/时间线中选择一个帖子时,详细视图就会显示在主帖子所在的位置顶部(但未固定在顶部 - 意味着它将随 tableview 向上/向下滚动),其 cmets 位于其下方的单元格中。

感谢您的帮助和时间!谢谢!

【问题讨论】:

    标签: ios swift parse-platform tableview pfquerytableviewcontrolle


    【解决方案1】:

    在左侧面板上的选择中,您可以使右侧面板上的 tableview 滚动到顶部动画 false。

    【讨论】:

    • 谢谢!但是,我不想让 tableview 向上滚动。我需要将所选帖子单元格的所有详细信息(用户名、帖子消息等)发送到回复页面的第一行(最上面的单元格)。其下方的第二个、第三个、第四个等单元格应包含回复。
    • 您可以发送通知,或者您可以使用 obj_setAssociatedObject 和 objc_getAssociatedObject 将这些对象绑定到视图控制器。
    • 你知道我怎样才能将详细视图的表格视图中的第一个单元格设置为前一个主视图中所选单元格的内容吗?
    【解决方案2】:

    经过进一步研究,“破解”它的一种方法是执行类似于以下的操作:

    1) 通过在单独的 Swift 文件中实现它来为顶行(最顶层的单元格)创建一个自定义的 tableview 单元格,就像您对原型单元格所做的那样。

    2) 现在您有两个自定义单元格。因此,实现两个功能,在每个功能中您都可以自定义它们以满足您的应用程序需求等和单元格的方式。

    3) 在cellForRowAtIndexPath 方法中,使用 if/else 语句为第 0 行(最顶部/标题单元格)返回适当的 tableview 单元格,否则为任何其他行(即:下面的单元格)返回另一个原型单元格标题单元格):

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        if indexPath.row == 0 {
            return headerCellAtIndexPath()
        } else {
            return commentCellAtIndexPath(indexPath)
        }
    }
    
    func headerCellAtIndexPath() -> CommentsHeaderTableViewCell {
        let headerCell = tableView.dequeueReusableCellWithIdentifier("topCell") as! CommentsHeaderTableViewCell
    
        // Customize your headerCell...
    
        return headerCell 
    
    }
    
    func commentCellAtIndexPath(indexPath:NSIndexPath ) -> CommentTableViewCell {
        let commentCell = tableView.dequeueReusableCellWithIdentifier("commentCell", forIndexPath: indexPath) as! CommentTableViewCell
    
        // Customize your commentCell...
    
        return commentCell
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多