2012-07-18 35 views
1

仍然感到在Objective-C漂亮的綠色 - 建設我的第一個「真正」的項目,早在擊中建築障礙..從的UIImagePickerController轉移到第二的UIViewController

我想提出我的看法和導航一個完全「定製」的環境 - 例如隱藏所有內置UI控件(例如UINavigationController或UITabBar)的東西。一個具體示例(如標題中所示):從「主」視圖直接移至UIImagePickerController,然後從UIImagePickerController直接移至新的第三視圖。

這裏有三個主要視圖控制器我正在使用:

  • MainViewController(UIViewController中的自定義子類,包含我主導航並且一般我的伯或「父」控制器)
  • ImageEditViewController(UIViewController中的定製子類,其中所述I覆蓋在所存儲的圖像的頂部一些控制)
  • 的UIImagePickerController(內置蘋果類)

有幾個辦法,我可以爲這個圖象(但我無法弄清楚如何做任何一個):

  1. 使用一個UINavigationController或UITabBar實施 ,但以某種方式隱藏系統UI控件並實現我自己的。我在這種方法被阻止,因爲 - 簡單地說 - 我不知道如何隱藏系統UI控件
  2. 在代碼中的特定點處,手動呼叫控制器到控制器或手動查看到查看轉換。我有點喜歡這種方法,但我無法弄清楚在我的控制器之間實例化和管理和轉換的最佳方法。事情的例子我不知道:我如何從我的主視圖控制器調用第二個視圖控制器?我如何直接從第二個視圖控制器調用第三個視圖控制器? (或至少直接過渡到第三!)

我假設這裏有一個簡單的解決方案;只是我還沒有學到有關在Apple的helper類之外管理視圖和視圖控制器的知識。

回答

2

你在說什麼系統UI控件?導航欄?

你可以做myNavigationController.navigationBarHidden = YES;爲UINavigationCOntroller

文檔here

至於你應該有的導航類型,這真的取決於你的用例。您是否想要實現層次結構或工作流程?那麼也許導航控制器就是你想要的。每個視圖控制器都是獨立的,不一定遵循工作流程?然後一個標籤欄控制器可以工作。

對於標籤欄,你應該能夠做這樣的事情:

myTabBarController.tabBar.hidden = YES; 
[[myTabBarController.view.subviews objectAtIndex:0] setFrame:CGRectMake(0, 0, 320, 480)]; // or whatever your screen dimensions are 
+1

是 - 對不起 - 我說的是一樣的UINavigationController和UITabBar - 我會更新這個問題本身,而是你可能剛剛解決我的問題:) – toblerpwn 2012-07-18 20:09:42

1

1。 隱藏導航欄,它很容易:

self.navigationController.navigationBarHidden = YES; 

隱藏的TabBar使用此:

- (void) hideTabBar:(UITabBarController *) tabbarcontroller { 


[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
for(UIView *view in tabbarcontroller.view.subviews) 
{ 
if([view isKindOfClass:[UITabBar class]]) 
{ 
    [view setFrame:CGRectMake(view.frame.origin.x, 480, view.frame.size.width, view.frame.size.height)]; 
} 
else 
{ 
    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 480)]; 
} 

} 

[UIView commitAnimations]; 





} 

- (void) showTabBar:(UITabBarController *) tabbarcontroller { 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
for(UIView *view in tabbarcontroller.view.subviews) 
{ 

if([view isKindOfClass:[UITabBar class]]) 
{ 
    [view setFrame:CGRectMake(view.frame.origin.x, 431, view.frame.size.width, view.frame.size.height)]; 

} 
else 
{ 
    [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 431)]; 
} 


} 

[UIView commitAnimations]; 
} 

2.

如果你想能夠輕鬆地導航向後,你應該使用導航控制器,它將允許您在完成視圖控制器時彈出視圖控制器。或者你也可以做這樣的事情(外導航控制器):

CustomViewController *controller = [[CustomViewController alloc] init]; 

[self presentModalViewController:controller animated:YES]; 
相關問題