Ios UIBarButtonItem以UIButton作为自定义视图不';我没有出现
我正在尝试将自定义的Ios UIBarButtonItem以UIButton作为自定义视图不';我没有出现,ios,objective-c,iphone,uibutton,uibarbuttonitem,Ios,Objective C,Iphone,Uibutton,Uibarbuttonitem,我正在尝试将自定义的ui按钮显示为ui导航项的右按钮项 我编写了以下代码: UIButton*inviteButton=[UIButton按钮类型:UIButtonTypeCustom]; [邀请按钮设置标题:@“邀请”状态:UIControlStateNormal]; inviteButton.frame=CGRectMake(0,0,30,30); inviteButton.backgroundColor=[UIColor redColor]; inviteButton.layer.bord
ui按钮
显示为ui导航项
的右按钮项
我编写了以下代码:
UIButton*inviteButton=[UIButton按钮类型:UIButtonTypeCustom];
[邀请按钮设置标题:@“邀请”状态:UIControlStateNormal];
inviteButton.frame=CGRectMake(0,0,30,30);
inviteButton.backgroundColor=[UIColor redColor];
inviteButton.layer.borderColor=[UIColor blueColor].CGColor;
inviteButton.layer.borderWidth=1.0f;
UIBarButtonItem*inviteButtonContainer=[[UIBarButtonItem alloc]initWithCustomView:inviteButton];
viewController.navigationItem.rightBarButtonItem=inviteButtonContainer代码>
我的导航栏中没有显示任何内容
但是,通过以下代码,我可以看到一个基本按钮:
UIBarButtonItem *inviteButton = [[UIBarButtonItem alloc] initWithTitle:@"Invite"
style:UIBarButtonItemStyleDone
target:self
action:nil];
viewController.navigationItem.rightBarButtonItem = inviteButton;
UIBarButtonItem*inviteButton=[[UIBarButtonItem alloc]initWithTitle:@“Invite”
风格:uibarbuttonimstyledone
目标:自我
行动:无];
viewController.navigationItem.rightBarButtonItem=inviteButton;
但这显然不是我想要的,因为我想玩的是按钮的外观。
编辑
我试图在许多导航栏中添加相同的UIBarButtonItem
(inviteButtonContainer
)实例。执行此操作后,它仅在最后一个导航栏上可见。
但是,如果我使用同一个简单的UIBarButtonItem
(没有自定义视图)实例,它会显示在每个导航栏上。你知道为什么吗?你的问题是邀请按钮初始化器:
UIButton *inviteButton = [UIButton UIButtonTypeCustom];
UIButtonTypeCustom
是枚举值,而不是类方法/构造函数
使用
希望这有助于->在视图控制器中显示自定义按钮,自定义栏按钮在视图控制器中装箱(即在self中):
->在即将显示的视图控制器中显示自定义栏按钮的步骤
例如,在表视图中选择单元格后显示视图控制器
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
DjDetailsViewController *controller = (DjDetailsViewController *)
[self.storyboard instantiateViewControllerWithIdentifier:@"DjDetailsViewController"];
UIButton *inviteButton = [UIButton buttonWithType:UIButtonTypeCustom];
[inviteButton setTitle:@"Invite" forState:UIControlStateNormal];
inviteButton.frame = CGRectMake(0, 0, 70, 30);
inviteButton.backgroundColor = [UIColor redColor];
inviteButton.layer.borderColor = [UIColor blueColor].CGColor;
inviteButton.layer.borderWidth = 1.0f;
UIBarButtonItem *inviteButtonContainer = [[UIBarButtonItem alloc] initWithCustomView:inviteButton];
controller.navigationItem.rightBarButtonItem = inviteButtonContainer;
[self.navigationController pushViewController:controller animated:YES];
}
我没有完成专业。我只是用了你的代码和改变框架的自定义栏按钮。
我希望这对你有帮助。
您的代码很好,只需更改此行:
viewController.navigationItem.rightBarButtonItem = inviteButtonContainer;
到
来自文档:
用于在视图中表示视图控制器的导航项
家长的导航栏
self
本身表示它属于视图控制器,因此无需提及视图控制器实例来添加导航项。我只是按照您的建议做了,但没有更改任何内容UIButton
已经是UIView
的一个子类了,所以我不明白你的意思。你把代码放在哪里了?viewController是什么?你的代码在我这边工作得很好,“邀请”标题没有正确显示(因为它的长度),但是按钮在那里。我在模拟器和iPhone5上运行它。您可能没有在正确的位置使用。对不起,这是在写问题时输入的错误。反正我也不可能遵守这样的规定。我编辑了我的问题。可能是你的框架在按钮上错了(对于文本来说太小了)。尝试调用[inviteButton sizeToFit]代码>设置文本后。还可以查看在使用类型为:UIButtonTypeRondRect的按钮时它是否工作
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *inviteButton = [UIButton buttonWithType:UIButtonTypeCustom];
[inviteButton setTitle:@"Invite" forState:UIControlStateNormal];
inviteButton.frame = CGRectMake(0, 0, 70, 30);
inviteButton.backgroundColor = [UIColor redColor];
inviteButton.layer.borderColor = [UIColor blueColor].CGColor;
inviteButton.layer.borderWidth = 1.0f;
UIBarButtonItem *inviteButtonContainer = [[UIBarButtonItem alloc] initWithCustomView:inviteButton];
controller.navigationItem.rightBarButtonItem = inviteButtonContainer;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
DjDetailsViewController *controller = (DjDetailsViewController *)
[self.storyboard instantiateViewControllerWithIdentifier:@"DjDetailsViewController"];
UIButton *inviteButton = [UIButton buttonWithType:UIButtonTypeCustom];
[inviteButton setTitle:@"Invite" forState:UIControlStateNormal];
inviteButton.frame = CGRectMake(0, 0, 70, 30);
inviteButton.backgroundColor = [UIColor redColor];
inviteButton.layer.borderColor = [UIColor blueColor].CGColor;
inviteButton.layer.borderWidth = 1.0f;
UIBarButtonItem *inviteButtonContainer = [[UIBarButtonItem alloc] initWithCustomView:inviteButton];
controller.navigationItem.rightBarButtonItem = inviteButtonContainer;
[self.navigationController pushViewController:controller animated:YES];
}
viewController.navigationItem.rightBarButtonItem = inviteButtonContainer;
self.navigationItem.rightBarButtonItem = inviteButtonContainer;