如何在iphone上的uinavigationbar上创建信息按钮

时间:2009-09-21 18:37:42

标签: iphone cocoa-touch uinavigationbar

我已经看到许多应用程序在uinavigationbar上有一个信息按钮(字母“i”,周围有一个圆圈)。如何添加此类按钮?

4 个答案:

答案 0 :(得分:31)

之前的答案很接近,没有完全编译。这是你真正想要的:

// Info button
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton];

答案 1 :(得分:3)

上面的答案中有内存泄漏。您应该使用“autorelease”来避免它。我试图编辑答案,但到目前为止我没有成功。

// Info button
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease];

这是正确的做法。

答案 2 :(得分:0)

您应该能够将“Info Light”类型按钮添加到UINavigationController当前正在显示的视图控制器的navigationItem。这样的东西可以放在你的视图控制器代码中:

- (void) viewDidLoad {
  UIButton * info = [UIButton buttonWithType:UIButtonTypeInfoLight];
  // set your button's target and selector for whatever action here.
  self.navigationItem.rightBarButtonItem.customView = info;
}

答案 3 :(得分:0)

您还可以使用当前条形按钮项目的目标和选择器作为信息按钮。

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[infoButton addTarget:self.barButtonItem.target action:self.barButtonItem.action forControlEvents:UIControlEventTouchUpInside];
self.barButtonItem.customView = infoButton;

这样,与条形按钮项目相关联的任何动作或细分都将转移到您的信息按钮。