1

我一直在尝试继承 UINavigationController 类来修改背景图像、导航栏大小、后退按钮、标题字体等内容。经过几个小时和大量阅读后,我明白我不应该继承 UINavigationController 类......

我想有特定的设计并将该设计转移到使用我的自定义 NavigationController 的所有屏幕......

到目前为止,我还没有找到任何优雅的解决方案,大多数解决方案都基于配置仅在下一个屏幕中显示的内容(下一个视图)。

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

4

4 回答 4

8

我正在显示自定义 leftbarbutton 的代码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];

希望对你有帮助..

于 2012-05-09T13:12:33.460 回答
1

是的@Nit是对的,这是自定义的方式UINavigationController,但如果你不想为UIViewController你拥有的每个人都这样做,你可以创建一个UIViewControllerBase类,它是UIViewController方法的子类viewDidLoad,设置所有按钮的方式@Nit 已经描述并让UIViewController你必须成为你班级的子UIViewControllerBase类。

于 2012-05-09T13:17:07.687 回答
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];
于 2012-05-09T13:25:37.353 回答
0

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

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

于 2013-05-30T08:38:44.203 回答