簡體   English   中英

按下按鈕時切換視圖

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM