我有一个拆分视图,其中我的拆分的顶部显示了一些问题,底部显示了一些其他的东西。问题在于,每次用户选择问题时,我都会将其写入“推送”到新视图。这显然不太理想,因为用户可以输入他们有15份副本(或多或少,取决于用户选择问题的次数)的情况,以便重新审阅。
我认为一个简单的解决方案是在用户选择问题时设置BOOL,但事实证明,这引入了一个新的错误,用户可以选择一次问题,但如果他们回去,他们是运气不好我有点被困在这里,任何指导都会非常感激。
计划流程:
首先,您需要了解我想要做的事情。我正在建立一个历史查询应用程序,专注于允许教师支持学生学习历史探究。因此,有核心问题以及学生可以分析的文件。
根据应用程序的出现方式,JSLDetailViewController显示核心问题,JSL_QuestionInteraction显示分析文档的问题。
相关代码段:
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if(indexPath.section == 0){
if(!didSelectQuestion){
[self performSegueWithIdentifier:@"questionDisplaySegue" sender:indexPath];
didSelectQuestion = TRUE;
} else {
JSLDetailViewController *detailView = [JSLDetailViewController alloc];
detailView.telegram = indexPath.row;
[detailView setDetailItem:indexPath];
}
}else if(indexPath.section == 1){
[self performSegueWithIdentifier:@"telegramQuestionDisplaySegue" sender:indexPath];
JSL_QuestionInteraction *questionView = [[JSL_QuestionInteraction alloc] init];
questionView.managedObjectContext = self.managedObjectContext;
}
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"questionDisplaySegue"]){
JSLDetailViewController *detailView = (JSLDetailViewController *)segue.destinationViewController;
detailView.telegram = index.row;
[detailView setDetailItem:index];
JSLDetailViewController *controller = (JSLDetailViewController *)segue.destinationViewController;
controller.managedObjectContext = self.managedObjectContext;
} else if ([segue.identifier isEqualToString:@"telegramQuestionDisplaySegue"]){
JSL_QuestionInteraction *questionView = [[JSL_QuestionInteraction alloc] init];
questionView.managedObjectContext = self.managedObjectContext;
}
}
如果您需要任何其他详细信息以了解此问题,请与我们联系。
答案 0 :(得分:0)
我不知道我在这里写的任何内容是否会解决您的问题,因为我仍然不了解您的结构,但我发布的代码中有一些错误。
首先,当你进行segues时,你不应该在代码中分配init'ing任何东西,segue会为你实例化新的控制器。目前还不清楚你在didSelectRowAtIndexPath中使用detailView做了什么,你做了一个没有init的alloc - 你应该从不做一个没有init的alloc。如果detailView已经出现在屏幕上,那么你应该获得对该实例的引用,并在其上设置telegram和detailItem。
在prepareForSegue的“if”子句中,您将segue.destinationViewController分配给两个不同的局部变量detailView和controller--它们都指向同一个东西,因此没有理由同时使用它们。
在“else”子句中,你的alloc再次启动一个控制器,你不应该这样做。你可能想要获得segue的目标视图控制器。