2013-05-17 65 views
2

我嘗試使用UIButton(提供'關於'信息)作爲導航欄上的標題設置基於導航的應用程序。我可以很容易地建立按鈕作爲標題,但不知道我應該做什麼,所以它是永久性的(並且每次調用一個新的viewController時,導航欄都不會滑動)。這裏是我當前的代碼:在整個應用程序的UINavigationBar上維護UIButton?

AppDelegate.h 

    @class ViewController; 
@interface AppDelegate : UIResponder <UIApplicationDelegate> 
@property (strong, nonatomic) UIWindow *window; 
@property (strong, nonatomic) ViewController *viewController; 

@end 

AppDelegate.m 

    #import "AppDelegate.h" 
    #import "ViewController.h" 
    @implementation AppDelegate 

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    { 
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
     // Override point for customization after application launch. 
     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
      self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil]; 
     } else { 
      self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil]; 
     } 
     UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.viewController]; 
     self.window.rootViewController = navController; 
     [self.window makeKeyAndVisible]; 
     return YES; 
    } 

ViewController.m 

    - (void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
     button.frame = CGRectMake(100, 4, 120, 36); 
     [button setImage:[UIImage imageNamed:@"logo_1.png"] forState:UIControlStateNormal]; 
     [button addTarget:self action:@selector(about) forControlEvents:UIControlEventTouchUpInside]; 
     self.navigationItem.titleView = button; 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

爲了清楚起見,從「viewDidLoad中」的代碼工作正常 - 我只是想有它設置在啓動和永遠持續下去(我有使用單對實際的方法沒有任何問題 - 我只是不希望它被重新加載)。

我一直在挖掘網站和修補幾個小時,似乎無法得到這個工作;謝謝提前幫助。

回答

0

每個UIViewController推到UINavigationController堆棧有它自己的UINavigationBar所以沒有辦法有一個全局按鈕。你可以爲每個ViewControllers創建一個通用基類,設置基類viewDidLoad中的按鈕。

我創建了一個示例應用程序來演示此方法。

https://github.com/GayleDDS/SameButtonOnAllNavBars

enter image description here

+0

能否請您詳細說明這是如何實現的呢?聽起來naviBar不可能滑動,但我可以重新計算幾個這樣做的應用程序。我認爲他們使用ViewControllers,並不託管一個/最小類中的每個視圖。 – Ryan

+0

@Ryan我在GitHub上創建了一個示例應用程序來演示。 – GayleDDS

+0

謝謝蓋爾 - 我非常感謝你的幫助。我沒有遇到過這樣的困難,實際上我已經在我的應用中使用了大量的Singleton,除非我錯過了不朽的東西 - 我所能做的就是調用每個類的方法來獲取我想要的導航項。但是我不能永久/靜態地讓我的導航欄坐在上面?我在代碼中遺漏了什麼?爲什麼titleView和rightItem之間存在差異,因爲標題滑落而右側的item可以留下?再次感謝。 – Ryan

相關問題