gpt4 book ai didi

iphone - UIButton 作为 UINavigationbar 按钮

转载 作者:行者123 更新时间:2023-12-03 18:37:25 24 4
gpt4 key购买 nike

我有一个标签栏应用程序。在其中一个选项卡栏中我有一个导航 Controller 。我试图设置一个带有图像的 UIButton 作为导航栏的右侧按钮。

    UIButton *refreshButton = [[UIButton alloc] init];
[refreshButton setImage:[UIImage imageNamed:@"refresh_icon.png"] forState:UIControlStateNormal];
[refreshButton addTarget:self action:@selector(refreshSection) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:refreshButton];
//[rightButton setImage:[UIImage imageNamed:@"refresh_icon.png"]]; << DOESN'T WORK EITHER
self.navigationItem.rightBarButtonItem = rightButton;
[refreshButton release];
[rightButton release];

但是图像没有显示。我得到一个隐形按钮。

编辑:我希望按钮样​​式为纯色或背景为透明,以便仅显示图像。因此我使用 UIbutton 而不是直接使用 UIBarButton。

最佳答案

您不必创建 UIButton 并将其用作 UIBarButtonItem 中的自定义 View 。您可以直接使用图像创建 UIBarButtonItem:

UIImage *myImage = [UIImage imageNamed:@"myImage.png"];
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:myImage style:UIBarButtonItemStyleBordered target:self action:@selector(refreshSection)];
self.navigationItem.rightBarButtonItem = button;
[button release];

--

已根据评论更新

使用UIImageView作为UIBarButtonItem中的自定义 View :

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]];
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:imageView];
self.navigationItem.rightBarButtonItem = rightButton;
[imageView release];
[rightButton release];

--

已更新

尝试了最后一种方法,虽然这在视觉上看起来确实像您想要的那样,但我似乎无法让它处理点击。虽然目标和行动已经确定。

--

最终更新

我已经在问题中得到了你的初始代码并正在运行。图像未显示的原因是您尚未设置按钮的框架。设置框架后,图像将显示在导航栏中。

这是我使用和测试的代码片段:

UIImage *myImage = [UIImage imageNamed:@"paw.png"];
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton setImage:myImage forState:UIControlStateNormal];
myButton.showsTouchWhenHighlighted = YES;
myButton.frame = CGRectMake(0.0, 0.0, myImage.size.width, myImage.size.height);

[myButton addTarget:self action:@selector(tapped:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:myButton];
self.navigationItem.rightBarButtonItem = rightButton;

[rightButton release];
[myButton release];

注意:我已设置 UIButtonshowsTouchWhenHighlighted 属性,以便在按下按钮时在视觉上突出显示该按钮。

关于iphone - UIButton 作为 UINavigationbar 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3828781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com