在tabview控制器内交换视图

时间:2013-05-10 07:00:42

标签: iphone objective-c

我有一个基于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.'

我不明白我做错了什么..我想完全交换视图而不是把它们放在一起。有什么建议吗?感谢

2 个答案:

答案 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不是子类)。