0

在我的应用程序中,我在 NavigationController 中使用自定义 UINavigationBar 和自定义 UIBarButtonItems。我的(自定义)NavigationBar 看起来不错,但是当我想放置自己的 backBarButtonItem 和 RightBarButtonItem 时,它就出错了。

安装我自己的 backBarButtonItem 根本不起作用(在 PushViewController 方法之后)。我使用这段代码:

    UIButton *home = [UIButton buttonWithType:UIButtonTypeCustom];  
    UIImage *homeImage = [UIImage imageNamed:@"Topbarback"];

    [home setBackgroundImage:homeImage forState:UIControlStateNormal];  

    home.frame = CGRectMake(0, 0, 51, 30);  
    UIBarButtonItem *backButton = [[UIBarButtonItem alloc]  
                                     initWithCustomView:home];  


    [self.navigationItem setBackBarButtonItem:backButton];

我也有自己的 rightBarButtonItem。我可以在我的 NavigationBar 上得到它,但它没有调用我想要的方法。这是我的代码:

    UIButton *home = [UIButton buttonWithType:UIButtonTypeCustom];  
    UIImage *homeImage = [UIImage imageNamed:@"Topbarback"];

    [home setBackgroundImage:homeImage forState:UIControlStateNormal];  

    home.frame = CGRectMake(0, 0, 51, 30);  
    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc]  
                                     initWithCustomView:home];  
    // self.navigationItem.backBarButtonItem = cancelButton;  

    [self.navigationItem setBackBarButtonItem:cancelButton];

在网上找了几个小时没有结果的解决方案后,我希望你们能帮助我!

谢谢!

编辑:抱歉为上一期发布了错误的代码:

UIButton *home2 = [UIButton buttonWithType:UIButtonTypeCustom];  
[home2 setTitle:@"Sort" forState:UIControlStateNormal];
[home2.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:15]];

UIImage *homeImage2 = [UIImage imageNamed:@"Topbarbutton"];

[home2 setBackgroundImage:homeImage2 forState:UIControlStateNormal];  

home2.frame = CGRectMake(0, 0, 77, 30);  
UIBarButtonItem *cancelButton2 = [[UIBarButtonItem alloc]  
                                 initWithCustomView:home2];
[cancelButton2 setTarget:self];
[cancelButton2 setAction:@selector(sorteren)];



self.navigationItem.rightBarButtonItem = cancelButton2;
4

2 回答 2

0

嗯,您似乎想在底部工具栏中添加一个按钮?你可以这样做:

UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithTitle:@"Title" target:self action:@selector(myButtonClicked:)];
    [toolbar setItems:[NSArray arrayWithObjects:myButton, nil]];
于 2011-12-30T20:28:19.467 回答
0

您在 UIViewController 上设置它有backBarButtonItem一个问题,但是当该视图可见时它不会显示,只有当该视图是要返回的视图时才会显示。

backBarButtonItem
当导航栏上需要后退按钮时使用的栏按钮项。
@property(nonatomic, retain) UIBarButtonItem *backBarButtonItem
讨论
当此导航项紧挨堆栈中的顶部项下方时,导航控制器会从此导航项派生导航栏的后退按钮。当此属性为 nil 时,导航项使用其 title 属性中的值来创建适当的后退按钮。如果要为后退按钮指定自定义图像或标题,则可以将自定义栏按钮项(带有自定义标题或图像)分配给此属性。在配置你的 bar button item 时,不要为其分配自定义视图;导航项无论如何都会忽略后退栏按钮中的自定义视图。
此属性的默认值为 nil。


对于不被调用的方法,您需要设置要调用的@selector

您可以使用此方法来创建您的按钮

- (id)initWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action

编辑
对于后退按钮
不要创建 UIButton,直接使用 UIBarButton。
这是我创建 backBarButtonItem 的方法。

UIBarButtonItem *bbi = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Maison.png"]
                                                        style:UIBarButtonItemStylePlain
                                                       target:nil
                                                       action:nil];
self.navigationItem.backBarButtonItem = bbi;
[bbi release], bbi = nil;
于 2011-12-30T20:36:29.917 回答