[英]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.