Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 根据UITableView中的单元格选择显示正确的视图控制器实例_Objective C_Uitableview_Parse Platform_Didselectrowatindexpath - Fatal编程技术网

Objective c 根据UITableView中的单元格选择显示正确的视图控制器实例

Objective c 根据UITableView中的单元格选择显示正确的视图控制器实例,objective-c,uitableview,parse-platform,didselectrowatindexpath,Objective C,Uitableview,Parse Platform,Didselectrowatindexpath,我知道这可能会在我在网站上看到的其他问题(见参考资料)的答案部分中涉及,但由于我的经验有限,我无法理解与我的代码相关的每个部分。请原谅我的任何重复 我有一个名为threadsViewController的PFQueryTableViewController(本质上是一个UITableViewController),它从解析后端获取单元格信息。表视图包含的线程与您在web论坛上看到的类似 然后,我有一个单独的类postsViewController,它是另一个PFQueryTableViewCon

我知道这可能会在我在网站上看到的其他问题(见参考资料)的答案部分中涉及,但由于我的经验有限,我无法理解与我的代码相关的每个部分。请原谅我的任何重复

我有一个名为
threadsViewController
的PFQueryTableViewController(本质上是一个UITableViewController),它从解析后端获取单元格信息。表视图包含的线程与您在web论坛上看到的类似

然后,我有一个单独的类
postsViewController
,它是另一个PFQueryTableViewController,我希望显示一个包含对该特定线程的所有响应(“posts”)的表

我正在寻找的功能是,用户点击一个线程(图中的左屏幕),该线程将显示一个
postsViewController
(右屏幕),其中只包含与该线程相关的帖子/响应。(见下面的基本示意图)

我从研究中了解到的:

  • 解析后端由线程后期的类建立
  • 我可能会使用
    didselectrowatinexpath
    delegate方法
我需要什么帮助:

  • 如何知道用户点击了哪个线程单元,然后将其传递给
    postsViewController
    以便只显示来自该线程的帖子
  • 外行对如何使用
    indexPath.row
    等的描述
我知道如何完成PFQueries等以获取单元格数据,但我不知道如何实现导航以及如何告诉
postsViewController
显示哪些帖子

如果它有帮助的话,这里是我迄今为止的实现。我尝试在
postsViewController
中添加一个名为
fromThread
的属性,以某种方式存储线程,但除此之外,我没有任何想法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [super tableView:tableView didSelectRowAtIndexPath:indexPath];

    postsViewController *postsVC = [[postsViewController alloc] init];
    postsVC.fromThread = //?
    [self performSegueWithIdentifier:@"threadsToPosts" sender:self];
}
参考资料


你走在正确的轨道上。您需要知道如何做两件事:(1)通过
indepath
访问解析对象,(2)在导航控制器中推送新的视图控制器

(1) 更简单:
PFQueryTableVC
提供了一个名为

// indexPath is the indexPath parameter to the didSelectRow delegate method
PFObject *fromThread = [self objectAtIndexPath:indexPath];
(2) 这也很简单。但更复杂的是,有几种方法可以做到这一点。是更现代的方式,但我认为旧方式更简单,当然更容易用代码描述。在序列图像板编辑器的“标识”选项卡上为视图控制器指定了序列图像板ID。给你的文章提供一个故事板id,比如“PostVC”

要获取新实例,请按如下方式使用该情节提要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
需要对与所选线程关联的帖子进行查询的地方。

您可以在
prepareforsgue
中将单元格数据传递给下一个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;
    }
}

你是个学者和绅士。非常感谢您抽出时间