如何设置navigationItem titleView的按钮?

iWi*_*ard 6 xcode uibutton uiview uinavigationitem ios

我想以编程方式设置navigationItem.titleView的按钮.

我尝试使用以下代码,但没有成功;

UIBarButtonItem *navigationTitleButton = [[UIBarButtonItem alloc] initWithTitle:@"Custom" style:UIBarButtonItemStyleBordered target:self action:@selector(backToHOmePage)];

navigationTitleButton.image = [UIImage imageNamed:@"title.png"];

self.navigationItem.titleView = navigationTitleButton;
Run Code Online (Sandbox Code Playgroud)

Warnng说:从'UIBarButtonItem*__ strong'分配给'UIView*'的指针类型不兼容

Jan*_*nub 13

尝试使用此代码,看看它是否适合您

UIView * container = [[UIView alloc]initWithFrame:CGRectZero];
UIButton * button = [[UIButton alloc]initWithFrame:CGRectZero];
[button addTarget:self action:@selector(backToHOmePage) forControlEvents:UIControlEventTouchUpInside];
[button setImage:[UIImage imageNamed:@"clanak_default.png"] forState:UIControlStateNormal];
[button sizeToFit];
[container addSubview:button];
[button release];
[container sizeToFit];
self.navigationItem.titleView = container;
[container release];
Run Code Online (Sandbox Code Playgroud)

  • 您的解决方案有效,谢谢!为什么如果UIButton是UIView的子类,UIButton不能直接用作titleView? (7认同)

Evg*_*y S 10

你不必创建BarItem,你需要创建UIView类对象;

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
view.backgroundColor = [UIColor clearColor];

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = view.frame;

[view addSubview:button];

self.navigationItem.titleView = view;
Run Code Online (Sandbox Code Playgroud)

要么

   UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
   button.frame = CGRectMake(0, 0, 40, 40);
   self.navigationItem.titleView = button;
Run Code Online (Sandbox Code Playgroud)