为每个屏幕自定义NavigationController的后退button

我一直在尝试UINavigationController类的子类来修改背景图像,导航栏大小,后退button,字体等等。 几个小时后,大量的阅读我明白,我不应该inheritanceUINavigationController类…

我想有具体的devise和将devise转移到使用我的自定义NavigationController的所有屏幕…

到目前为止,我还没有为此提供任何优雅的解决scheme,大多数解决scheme都是基于configuration仅在下一个屏幕中显示的内容(下一个视图)。

我怎样才能做到这一点? 也许使用类别? 提前致谢。

我正在显示UINavigationcontroller自定义leftbarbutton的代码。 您可以在每个视图控制器中添加此代码,并为这两个button(右和左)

  leftButton = [UIButton buttonWithType:UIButtonTypeCustom]; [leftButton setImage:[UIImage imageNamed:@"Yourcutomeimage.png"] forState:UIControlStateNormal]; leftButton.frame = CGRectMake(0, 0, 30, 30); [leftButton addTarget:self action:@selector(youraction:) forControlEvents:UIControlEventTouchUpInside]; self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:leftButton]autorelease]; 

//要么

 self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:leftButton]autorelease]; 

希望对你有帮助..

是@Nit是正确的,这是自定义UINavigationController ,但是如果你不想为每个UIViewController都做,你可以创build一个UIViewControllerBase类,它是UIViewController一个子类,在viewDidLoad方法中,设置所有button的方式@Nit描述,然后使每个UIViewController你必须是你的UIViewControllerBase类的子类。

如果你想添加一个自定义的后退button到uinavigationcontroller,你应该使用navigationItem.backBarButtonItem并在初始化uinavigationcontroller的类中实现它。 样本: –

 UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"btnImage.png" style:UIBarButtonItemStyleBordered target:youtarget action:@sel(your action)]; self.navigationItem.backBarButtonItem = backButton; [backButton release]; 

我在这个答案中概述了我的解决scheme: https : //stackoverflow.com/a/16831482/171933

基本上,你在UIViewController上创build一个类别,并在视图控制器的每个viewWillAppear方法中调用一个单一的方法。