我正在尝试从我的splitviewcontroller主视图加载3个详细视图。所有这些都是通过ios 5和XCode 4.2中的故事板设置的。详细信息视图A是它自己的类。详细视图C是详细视图B的子类。
master实际上是一个TabBarViewController。
我的设计是否存在根本缺陷,尝试使用performSegueWithIdentifier切换详细视图?
我最终得到了一个对我这个新手没有帮助的sigabort。
以下是发生的事情:
我还没有联系到细节C.我想切换到所有主人的细节C,甚至是细节A和B.
sigabort在退出prepareForSegue时发生。每个prepareForSegue似乎都在做我认为应该做的事情。这一切都发生在模拟器中的横向模式中。
我花了很多时间搜索stackoverflow,阅读文档,并查看示例。我试图让我的故事板反映出视图和思想之间的联系。当主视图改变时,performSegueWithIdentifier是在细节视图之间转换的一种自然方式。
我不理解什么?
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"ImageVC"]) {
// Get a pointer to the dictionary at the currently selected row index
NSDictionary *photoDictionary = [self.photoList objectAtIndex:self.tableView.indexPathForSelectedRow.row];
// NSLog(@"%@", photoDictionary);
// Set up the photo descriptions in the PhotoDescriptionViewController
[[segue destinationViewController] setPhotoDictionary:photoDictionary];
} else if ([segue.identifier hasSuffix:@"MapVC"]) {
if ([self splitViewMapViewController]) {
[self splitViewMapViewController].annotations = [self mapAnnotations];
[self splitViewMapViewController].delegate = self;
} else {
[[segue destinationViewController] setAnnotations:[self mapAnnotations]];
[[segue destinationViewController] setDelegate:self];
}
}
}
- (void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:NO animated:animated];
[super viewWillAppear:animated];
NSLog(@"Super class:%@", [self superclass]);
NSLog(@"Class:%@", [self superclass]);
if ([self.splitViewController.viewControllers lastObject]) { // in a split controller, load detail view
if ([self isMemberOfClass:[PhotoListTableViewController class]]) {
#if TEST > 0
NSLog(@"Segue to PhotoListMapVC");
#endif
[self performSegueWithIdentifier:@"PhotoListMapVC" sender:self];
} else if ([self isKindOfClass:[PhotoListTableViewController class]]) {
#if TEST > 0
NSLog(@"Segue to RecentsMapVC");
#endif
[self performSegueWithIdentifier:@"RecentsMapVC" sender:self];
} else {
NSLog(@"PhotoListTableViewController:viewWillAppear unexpected class %@", [self class]);
return;
}
}
}