当我点击应用中的按钮时,我正在尝试加载新视图。 我得到的错误是 -
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
答案 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];
最好有一个导航控制器,您可以在其中推送或弹出控制器。