2011-12-24 108 views
0

我有兩個視圖控制器名爲「view1ViewController」和「view2ViewController」在一個可可觸摸項目,他們都鏈接到故事板中的UIView。假設我在view1中放置了一個按鈕。代碼方面,按下該按鈕後切換到view2的最簡單方法是什麼?我需要輸入哪些代碼才能使其工作?如何在可可觸摸中切換視圖?

- 更新 -

儘管你都告訴我這件事,我還是不能得到這個工作。也許我沒有得到什麼?我需要添加其他東西嗎?下面是view1ViewController.m代碼:

#import "view1ViewController.h" 
#import "view2ViewController.h" 


@interface view1ViewController() 

@property (nonatomic, strong) view2ViewController *controller; 

@end 

@implementation view1ViewController 
@synthesize controller = _controller; 

- (view2ViewController *)controller 
{ 
    if (!_controller) { 
     _controller = [[view2ViewController alloc] init]; 
    } 
    return _controller; 
} 

- (IBAction)buttonPressed { 
    [self.navigationController pushViewController:self.controller animated:YES]; 
} 
@end 

我沒碰過其他文件,並確保設置類添加視圖在故事板view2ViewController。

+0

Xcode只是一個IDE - 所以正確的答案是:完全沒有 – vikingosegundo 2011-12-24 03:56:15

+0

您是否需要在代碼中完成它,或者基於segue的方法適用於您? – dasblinkenlight 2011-12-24 03:56:33

+0

我真的不喜歡基於segue的方法,因爲我正在開發一個應用程序,它需要一個相當動態的方法來處理視圖, – blake305 2011-12-24 04:01:28

回答

2

只是

[self.navigationController pushViewController:view2ViewController animated:YES]; 

簡單的結果,你可以能夠找到自己只是google搜索了一會兒......

我假定你的應用是導航爲主。如果不是這種情況,則需要初始化一個UINavigationController。例如,在您的應用程序委託,在你didFinishLaunchingWithOptions:方法,你可以這樣做

navigationController = [[UINavigationController alloc] init]; 
[self.window addSubview:navigationController.view]; 
[navigationController pushViewController:self.viewController animated:NO]; 

[self.window addSubview:navigationController.view]; 
[self.window makeKeyAndVisible]; 

其中navigationControllerUINavigationController設爲@property

如果你不想安裝一個UINavigationController你可以選擇呈現另一種觀點模態使用

[self presentModalViewController:view2ViewController animated:YES]; 
+0

我必須#在任何文件中導入任何內容嗎?因爲它說的意外推斷名稱「view2ViewController」 – blake305 2011-12-24 04:32:30

+0

你必須#導入view2ViewController的頭文件在任何文件你想引用它。還要記住,如果你不使用ARC,你會想釋放你的view2viewcontroller:View2ViewController * controller = [[View2ViewController alloc] init]; [self.navigationController pushViewController:controller animated:YES]; [控制器發佈]; – 2011-12-24 04:37:03

+0

它仍然無法正常工作。你能在主文章中閱讀我的更新嗎?你的評論很有幫助順便說一句,傑克! – blake305 2011-12-24 04:56:16

1

如果您還沒有安裝導航控制器,這種做法是行不通的。要設置導航控制器,您需要確保當前視圖是導航控制器的根視圖控制器。這可以以編程方式完成,但是如果使用故事板,將視圖嵌入導航控制器會更容易。一旦控制器就位,推動應該工作。

對於故事板嵌入,轉到頂部菜單並選擇 編輯 - >嵌入導航控制器。

對於通過代碼做,只要你創建這個觀點,而不是把它寫成

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:view1ViewController]; 

那麼無論你添加的view1ViewController添加導航控制器。