2009-04-09 88 views
3

我沒有使用標籤欄或任何其他控件 - 我想基本上將當前視圖動態地(即通過代碼)更改爲不同的視圖控制器。我不使用Interface Builder在所有...如何以編程方式爲iPhone啓動/處理視圖?

例如,假設我們創建三個視圖控制器:

(這可能不是最好的例子,但我要把它簡單化)

View_Hello.m(和.h)

View_Goodbye.m(和.h)

View_Ciao.m(和.h)

我們ViewerAppDelegate會升aunch View01_Hello。

View_Hello會有一個自定義的觸摸方法,如果刷過了就需要去View_Ciao,但如果只是觸摸了View_Goodbye。

關於如何做到這一點的任何想法(並且請不要說「哦,您需要使用xxx界面元素作爲這個例子」。我需要能夠隨意更改基於視圖中的程序控制的視圖我正在研究的應用程序)

過去一週,我一直在Google和StackOverflow上衝浪,並瀏覽了我的三本O'Reilly Cocoa書籍(外加三本iPhone開發人員的書籍),而他們都只是使用簡單的界面 - 但沒有顯示像我想要做的例子。

===========

編輯(@Andrew格蘭特):

例如:

View_Ciao *viewCiao; 
-(void) viewDidLoad { 
    viewCiao = [[View_Ciao alloc] initWithNibName:@"View_Ciao" bundle:nil]; 
    [viewCiao.view setNeedsDisplay]; 
    [super viewDidLoad]; 
} 

此崩潰。 :-)

=============

編輯(@Daniel Dickison)

輝煌 - 那工作!

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    [window addSubview:viewController.view]; 
    [window makeKeyAndVisible]; 

    // create the second view, remove the first, and then display the second 

    viewCiao = [[ViewCiao alloc] init]; 
    [viewController.view removeFromSuperview]; 
    [window addSubview:viewCiao.view]; 
} 

回答

1

如何像:

@interface AppDelegate : ... 
{ 
    View_Hello *hello; 
    View_Goodbye *goodbye; 
    View_Ciao *ciao; 
    UIViewController *currentView; 
    UIWindow *window; 
} 
... IBOutlet properties for the 3 controllers. 
@end 

@implementation AppDelegate 
- (void)switchToGoodbye 
{ 
    [currentView.view removeFromSuperview]; 
    [window addSubview:goodbye.view]; 
    currentView = goodbye; 
} 
... etc. 
@end 

您可能需要將它添加到窗口前,調整視圖大小,以及之前和之後對currentView和新的視圖控制器打電話viewWillDisappear:viewDidDisappear:viewWillAppear:viewDidAppear:他們'刪除/添加。

1

加載相應的視圖並將其作爲子視圖添加到父視圖中,然後從其父視圖中移除現有視圖。

如果您只有一個級別的視圖,那麼您的窗口就是父級。

+0

我在上面添加了一條評論,以顯示一種方式,這將*不*工作。此外,我*有*有每個班級的筆尖文件嗎?我寧願不... – 2009-04-09 21:15:10

2

您是否看過Erica Sadun的食譜2-8「Swiping Views」iPhone Developer's Cookbook?她使用touchesBegan和touchesMoved來確定滑動方向,然後根據touchesEnded中的方向設置動畫。

您可以擴展或修改此選項以添加輕擊檢測,以確定要過渡到哪個視圖。無論如何,如果你想看一看,配方就在第69頁左右。還有一個video (mov) sample here和一個code sample here.

相關問題