2012-11-05 180 views
0

我無法弄清楚如何將導航控制器添加到我的iOS應用程序。我需要除「主屏幕」之外的所有視圖都有後退按鈕,但我不確定如何添加它。添加帶後退按鈕的UINavigationController

這裏是我的項目鏈接: https://www.dropbox.com/s/sv0y3oh1aftxl95/KFBNewsroom%204.zip

+0

請不要在這裏發佈你的代碼,並期望用它來解決它。做一些研究,告訴你使用了什麼,以及你需要幫助的地方。 – rckoenes

回答

1

從所有的發鈔銀行取出的導航欄,以及使用導航控制器(如應用程序的委託像NeverBe概述),然後過渡到孩子控制器通過pushViewController而不是presentViewController,您應該自動獲得「後退」按鈕。如果您有任何關於dismissViewControllerAnimated的信息,您也可以刪除,因爲您的後退按鈕現在可以爲您做popViewControllerAnimated。但是,如果您需要以編程方式隨時隨地彈出,則可以使用popViewControllerAnimated

在你的發鈔銀行,你可能還需要調整模擬指標,讓您可以在導航欄圖形表示,如設計你的筆尖:

simulated metrics for nav bar

View Controller Catalog的導航控制區與請參閱UINavigationController Class Reference

+0

我得到了正確的導航控制器的根視圖。我仍然遇到與使用後退按鈕的導航欄出現在其他視圖上的問題。例如,在ListViewController這是一個表視圖。另外,當我改變[自我presentViewController:webViewController動畫:無完成:無];到[[self navigationController] pushViewController:webViewController animated:YES];它不會讓我在ListViewController中選擇一行進入webview。 – RagingGoat

+0

你能告訴我一個你改變了什麼的例子嗎?當我改變[自我presentViewController:webViewController動畫:無完成:無];至[[self navigationController] pushViewController:webViewController animated:YES]; – RagingGoat

+0

它不會去webview – RagingGoat

0
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[KFBViewController alloc] initWithNibName:@"KFBViewController" bundle:nil]]; 
    self.window.rootViewController = nav; 
    self.window.backgroundColor = [UIColor whiteColor]; 
    [self.window makeKeyAndVisible]; 
    return YES; 

調用新的視圖控制器

KFBYouTubeView *youtubeView = [[KFBYouTubeView alloc] initWithNibName:@"KFBYouTubeView" bundle:nil]; 
[self.navigationController pushViewController:youtubeView animated:YES]; 

更新:

方法添加自定義導航欄按鈕

- (void)customizeNavigationButtonWithType:(NavigationBarButtonType)type 
          normalImageName:(NSString *)normalImageName 
         selectedImageName:(NSString *)selectedImageName 
           selector:(SEL)selector { 
    UIImage *img = [UIImage imageNamed:normalImageName]; 
    UIImage *imgPressed = [UIImage imageNamed:selectedImageName]; 
    UIButton *customButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [customButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
    [customButton setImage:img forState:UIControlStateNormal]; 
    [customButton setImage:imgPressed forState:UIControlStateHighlighted]; 
    customButton.frame = CGRectMake(0, 0, img.size.width, img.size.height); 
    [customButton addTarget:self action:selector forControlEvents:UIControlEventTouchUpInside]; 

    UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithCustomView:customButton]; 
    switch (type) { 
     case NavigationBarButtonTypeLeft: 
      [self.navigationItem setLeftBarButtonItem:btn animated:YES]; 
      break; 
     case NavigationBarButtonTypeRight: 
      [self.navigationItem setRightBarButtonItem:btn animated:YES]; 
      break; 
    } 
} 

用法:

[self customizeNavigationButtonWithType:NavigationBarButtonTypeRight 
         normalImageName:@"create.png" 
         selectedImageName:@"create_highlight.png" 
           selector:@selector(pressButton:)]; 
+0

有沒有辦法在nib文件的界面生成器中添加一個後退按鈕?當我添加該代碼時,它會弄亂我的按鈕佈局。 – RagingGoat

+0

@RagingGoat您確實想使用導航控制器並刪除您手動添加的所有導航欄。如果希望視圖的Interface Builder表示看起來正確,請使用模擬指標,如我在答案中概述的那樣。 – Rob

+0

@RagingGoat答案已更新 – NeverBe

相關問題