右栏按钮没有显示

时间:2011-06-23 14:23:41

标签: iphone ios ios4

我有以下代码用于放置rightbarbuttonitem

UIButton* rightbutton = [UIButton buttonWithType:UIButtonTypeCustom];
    [rightbutton setBackgroundImage:[UIImage imageNamed:@"share-icon.png"] forState:UIControlStateNormal];
    [rightbutton addTarget:self action:@selector(share:) forControlEvents:UIControlEventTouchUpInside];
    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:rightbutton] autorelease];

但它没有显示任何barbuttonitem。相反,如果我使用下面的代码然后出现barbutton项,但问题是我无法在barbuttonitem上使用此代码设置触摸事件。

UIImageView *iconView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"dashboard-icon.png"]];
    UIBarButtonItem *icon = [[UIBarButtonItem alloc] initWithCustomView:iconView];
    self.navigationItem.leftBarButtonItem=icon;
    [icon release];
    [iconView release];

5 个答案:

答案 0 :(得分:7)

我的猜测是,你将UIBarButtonItem添加到了错误的对象! 你需要将它添加到rootViewController(而不是像你可能那样添加到UINavigationController

YourRootViewController *theRootController = [[YourRootViewController alloc] init];

UINavigationController* navContainer = [[UINavigationController alloc] initWithRootViewController:theRootController];

UIButton* rightbutton = [UIButton buttonWithType:UIButtonTypeCustom];
    [rightbutton setBackgroundImage:[UIImage imageNamed:@"share-icon.png"] forState:UIControlStateNormal];
    [rightbutton addTarget:self action:@selector(share:) forControlEvents:UIControlEventTouchUpInside];
 theRootController.navigationItem.rightBarButtonItem = rightbutton;

[navContainer setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentModalViewController:navContainer animated:YES];

答案 1 :(得分:2)

如果您使用的是白色导航栏,请不要忘记在UIBarButtonItem上设置tintColor。我的按钮在那里,但看不见。

答案 2 :(得分:1)

您是否尝试为rightbutton设置合适的框架?例如rightbutton.frame = (CGRect){CGPointZero, image.size};

另请注意:

  

在iOS 4及更高版本中,名称为   文件不需要指定   文件扩展名。在iOS 4之前,   你必须指定文件名   扩展

答案 3 :(得分:0)

使用swift 3.0 iOS 10.0

让customButton = UIBarButtonItem(标题:“右”,样式:.plain,target:self,action:#selector(yes))         customButton.width = 100.0        navigationItem.rightBarButtonItem = customButton

func yeah(发件人:UIBarButtonItem){         打印(“哟你的男人/女人”)     }

答案 4 :(得分:0)

为孩子设置rightBardButtonItems时遇到了这个问题 而不是最root的viewcontroller

视图控制器始终具有Navigationitem,但这不一定 表示它有一个导航栏可以显示在其中