我理解这可能会在我在网站上看到的其他问题(参见参考资料)的答案中有部分内容,但由于我的经验有限,我无法理解每个部分,因为它与我的代码有关。请原谅我有任何重复。
我有一个名为threadsViewController
的PFQueryTableViewController(本质上是一个UITableViewController),它从Parse后端获取单元信息。表视图由与您在Web论坛上看到的类似的线程组成。
然后我有一个单独的类postsViewController
,这是另一个PFQueryTableViewController,我希望显示一个包含该特定线程的所有响应(' posts')的表。
我正在寻找的功能是用户点击线程(图像中的左侧屏幕)以显示postsViewController
(右侧屏幕),其中仅包含与该相关的帖子/响应线。 (见下面的基本图表)。
我从研究中了解到的信息:
didSelectRowAtIndexPath
委托方法我需要帮助:
postsViewController
仅显示该线程中的帖子?indexPath.row
等我了解如何完成PFQueries等以获取单元格的数据,我只是不知道如何实现导航以及如何告诉postsViewController
要显示哪些帖子。
如果它有所帮助,这是我到目前为止的实现。我尝试将一个属性添加到名为postsViewController
的{{1}},以某种方式存储该帖子,但除此之外,我没有想法!
fromThread
参考
How to filter a Parse query by an tableview index?
答案 0 :(得分:0)
你走在正确的轨道上。您需要知道如何做两件事:(1)通过indexPath
访问您的解析对象,以及(2)在导航控制器中推送新的视图控制器。
(1)更简单:PFQueryTableVC
提供了一种名为objectAtIndexPath:
的方法,可以满足您的需求。
// indexPath is the indexPath parameter to the didSelectRow delegate method
PFObject *fromThread = [self objectAtIndexPath:indexPath];
(2)也很简单。但更复杂,因为有几种方法可以做到这一点。 Segue是更现代的方式,但我认为旧方法更简单,并且在代码中更容易描述。视图控制器在" Identity"上提供了故事板ID。故事板编辑器中的选项卡。给你的帖子呈现VC一个故事板ID,如" PostVC"。
要获取新实例,请使用该storyboard id,如下所示:
MyPostVC *postVC = [self.storyboard instantiateViewControllerWithIdentifier:@"PostVC"];
// initialize it with the PFObject we got above
postVC.fromThread = fromThread;
// present it on the navigation stack
[self.navigationController pushViewController:postVC animated:YES];
而fromThread
正是PostVC
为与所选主题相关联的帖子形成查询所需的内容。
答案 1 :(得分:0)
您可以使用类似的内容将单元格的数据传递到prepareForSegue
中的下一个ViewController
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"threadsToPosts"]) {
UINavigationController *navCon = segue.destinationViewController;
postsViewController *postsViewController = [navCon.viewControllers objectAtIndex:0];
// Whatever you are populating your tableView with
Thread *thread = [self.thread objectAtIndex:self.tableView.indexPathForSelectedRow.row];
postsViewController.thread = thread;
}
}