按下按钮时切换视图

时间:2011-11-06 00:35:26

标签: iphone ios

当我点击应用中的按钮时,我正在尝试加载新视图。 我得到的错误是 -

View Switcher[6867:207] -[UIView pushViewController:animated:]: unrecognized selector sent to instance 0x6010660

,源代码段是 -

-(IBAction) blueButtonPressed:(id)sender{

if(self.yellowViewController == nil){
    YellowViewController *yellowController = [[YellowViewController alloc] initWithNibName:@"YellowView" bundle:nil];
    self.yellowViewController = yellowController;
    //[yellowController release];

    //[self.view addSubview:yellowController.view];
//[self.view pushViewController:self.yellowViewController];
    [self.navigationController pushViewController:self.yellowViewController];
[yellowController release];
}
//[self.navigationController pushViewController:self.yellowViewController animated:YES];
}

这是我正在使用的头文件 -

#import <UIKit/UIKit.h>

@class BlueViewController;
@class YellowViewController;


@interface BlueViewController : UIViewController {  
YellowViewController *yellowViewController;
BlueViewController *blueViewController; 
}
-(IBAction)blueButtonPressed:(id)sender;

@property(retain) YellowViewController *yellowViewController;
@property(retain, nonatomic) BlueViewController *blueViewController;
@end

xcode项目的链接是 - https://rapidshare.com/files/2403429896/View_Switcher.zip

3 个答案:

答案 0 :(得分:3)

pushViewController是一个UINavigationController方法。

[self.navigationController pushViewController:self.yellowViewController animated:YES];

我假设你在UIViewController子类


你能否发布我需要看到的Xcode项目。


好的,我查看了你的代码,问题是你没有任何navigationController。您的应用程序的结构类似于视图基础应用程序,而不像导航基础应用程序 结果是你的self.navigationController == nil,这就是忽略该调用的原因。

在您的应用程序委托中,您需要一些看起来像这样的代码

UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:switchViewController];
navCon.navigationBarHidden = YES;
self.window.rootViewController = navCon;
[window makeKeyAndVisible];

在applicationFinised中......


在您的代码中,当您单击工具栏中的开关时,它“正在工作”,因为您使用此代码:

[blueViewController.view removeFromSuperview];
[self.view insertSubview:yellowViewController.view atIndex:0];

在那个过程中没有navigationController。

答案 1 :(得分:1)

UIView没有 pushViewController:animated:作为方法。

您只能在UINavigationController中推送

答案 2 :(得分:1)

您应该使用[self.view addSubview:yellowController.view];

最好有一个导航控制器,您可以在其中推送或弹出控制器。