我有一个基于tabBar控制器的应用程序。在某个视图中,我想添加滑动手势识别并将当前视图与另一个视图交换(这不是tabBarController数组的一部分)。我试过了:
- (IBAction)swipeLeftDetected:(UIGestureRecognizer *)sender
{
//Does not work
UIViewController *DesiredViewController =[[UIViewController alloc] initWithNibName:@"DesiredViewController" bundle:nil];
DesiredViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:DesiredViewController animated:YES];
[self.view addSubview:DesiredViewController.view];
}
但程序崩溃了。我得到的错误与SegmentedControl有关,SegmentedControl出现在下一个视图中,但在当前视图中不存在。这些观点独立完美!
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason:'[<UIViewController 0xa355fb0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key X_SegmentedControl.'
我不明白我做错了什么..我想完全交换视图而不是把它们放在一起。有什么建议吗?感谢
答案 0 :(得分:1)
改为使用此
-(IBAction)swipeLeftDetected:(UIGestureRecognizer *)sender
{
DesiredViewController *objView =[[DesiredViewController alloc]initWithNibName:@"DesiredViewController" bundle:nil];
objView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:objView animated:YES];
[objView release]; // use release if using Non-ARC
}
答案 1 :(得分:0)
问题不在于过渡。
您正在从NIB加载视图控制器。
视图控制器通常是子类,所以(假设您的nib配置正确,并且您的DesiredViewController子类有.h
和.m
实现文件),您应该这样初始化:
DesiredViewController *controllerInstance =[[DesiredViewController alloc] initWithNibName:@"DesiredViewController" bundle:nil];
异常是因为您可能在视图控制器子类中有一个分段控件,Xcode正在尝试将此控件链接到视图控制器上的插座,但此插座不存在(因为您正在分配{{1不是子类)。