我一直在尝试子类化UINavigationController类来修改背景图像,导航栏大小,后退按钮,tittle字体等内容。 经过几个小时和大量的阅读后,我明白我不应该继承UINavigationController类......
我希望有特定的设计并将该设计转移到使用我的自定义NavigationController的所有屏幕......
到目前为止,我还没有为此提供任何优雅的解决方案,大多数解决方案都是基于配置仅在下一个屏幕中显示的内容(下一个视图)。
我怎样才能做到这一点?也许使用类别? 提前谢谢。
答案 0 :(得分:8)
我正在显示UINavigationcontroller
的自定义左栏按钮的代码。您可以在每个视图控制器中添加此代码,也可以在两个按钮(右侧和左侧)中添加此代码
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];
希望,这会对你有帮助..
答案 1 :(得分:1)
是的@Nit是对的,这是自定义UINavigationController
的方法,但是如果您不想为每个UIViewController
执行此操作,则可以创建UIViewControllerBase
} class,它是UIViewController
的子类,在viewDidLoad
方法中,按照@Nit所描述的方式设置所有按钮,然后让每个UIViewController
成为你{的UIViewControllerBase
的子类{1}}上课。
答案 2 :(得分:0)
如果要向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];
答案 3 :(得分:0)
我在这个答案中概述了我的解决方案:https://stackoverflow.com/a/16831482/171933
基本上,您在UIViewController上创建一个类别,并在视图控制器的每个viewWillAppear
方法中调用一个方法。