[英]Switching views when pressing button
单击应用程序中的按钮时,我试图加载新视图。 我得到的错误是-
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
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];
在应用程序中...
在您的代码中,当您单击工具栏中的开关时,它是“有效的”,因为您使用以下代码:
[blueViewController.view removeFromSuperview];
[self.view insertSubview:yellowViewController.view atIndex:0];
在此过程中没有NavigationController。
UIView没有方法pushViewController:animated:。
您只能在UINavigationController中推送
您应该使用[self.view addSubview:yellowController.view];
最好有一个导航控制器,您可以在其中推入或弹出控制器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.