iPhone应用程序 - 为NavigationController创建一个主页按钮?

时间:2012-05-28 13:07:35

标签: objective-c uinavigationcontroller

默认情况下xcode执行此操作:当您在导航控制器中查看第一个视图时,标题中不会显示“后退”按钮。只有当您前往由第一个视图实例化的另一个视图时,才会显示后退按钮。

我想在第一个视图中显示主页按钮或后退按钮。单击它将执行某个操作....比如说更改rootviewcontroller。如何显示此按钮以及如何仅在第一个视图上覆盖它的行为?在任何其他视图上,后退按钮的行为应该作为默认值。

2 个答案:

答案 0 :(得分:0)

试试这个:

UIButton *button =  [UIButton buttonWithType:UIButtonTypeCustom];
NSString* backBtnImg = @"myImage";
UIImage *buttonImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:backBtnImg ofType:@"png"]];
[button setBackgroundImage:buttonImage forState:UIControlStateNormal];
[button setTitle:@"back" forState:UIControlStateNormal];
[button addTarget:self action:@selector(myAction) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height)];

UIBarButtonItem *btnItem = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.leftBarButtonItem = btnItem;

答案 1 :(得分:0)

在根视图控制器的viewDidLoad方法中,初始化UIBarButtonItem并将其添加到导航控制器的工具栏中:

UIBarButtonItem *homeButton = [[UIBarButtonItem alloc]
                              initWithTitle:@"Home"
                              target:[AppDelegate sharedDelegate]
                              action:@selector(changeRootViewController)];
[self.navigationItem setLeftBarButton:homeButton animated:NO];

如果要换出根视图控制器,target应该是您的应用程序委托类。在该类中创建一个名为changeRootViewController的方法来执行视图控制器交换。

您可以使用initWithImage:更改homeButton以使用图片而非文字。