如何为UISplitViewController在纵向模式下显示的UIBarButtonItem提供自定义视图?

时间:2010-08-09 10:00:30

标签: ipad uibarbuttonitem uisplitviewcontroller

当我们在使用UISplitViewController时进入肖像模式时,它们将通过barButtonItem为我们提供。如何为barButtonItem使用customView?

我尝试了以下方式。如果我从纵向开始,它可以工作。但是,如果我去景观,当我回来时,它会崩溃。

在viewDidLoad

UIImage *image = [UIImage imageNamed:@"home.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.bounds = CGRectMake(0, 0, 22.00, 22.00);    
[button setImage:image forState:UIControlStateNormal];
[button addTarget:self action:@selector(showHomeDetails) forControlEvents:UIControlEventTouchDown];    
homeButton = [[UIBarButtonItem alloc] initWithCustomView:button];
[button release];

然后在willHideViewController

barButtonItem = homeButton;

我有什么不好意思?或者有替代解决方案吗?

3 个答案:

答案 0 :(得分:1)

在willHideViewController中完成了这样的重写,并完成了它。

UIImage *image = [UIImage imageNamed:@"news.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.bounds = CGRectMake(0, 0, image.size.width, image.size.height );    
[button setImage:image forState:UIControlStateNormal];
[button addTarget:self action:@selector(showSideTable) forControlEvents:UIControlEventTouchUpInside];    
[barButtonItem setCustomView:button];

主要更改已删除[按钮释放]。

答案 1 :(得分:0)

我相信它应该是这样的:

UIImage *image = [UIImage imageNamed:@"home.png"];
UIImageView *imageView = [UIImageView initWithImage:image];
homeButton = [[UIBarButtonItem alloc] initWithCustomView:imageView];
[homeButton addTarget:self action:@selector(showHomeDetails)];
[homeButton setBounds:CGRectMake(0, 0, 22.00, 22.00)];

希望这能解决你的问题 jrtc27

答案 2 :(得分:0)

假设图像是您正在寻找的自定义视图:

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
    [barButtonItem setImage:[UIImage imageNamed:@"awesome_menu_icon.png"]];
    [[self navigationItem] setLeftBarButtonItem:barButtonItem];
}