0

当我们在使用 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;

我该怎么办?或者是否有替代解决方案?

4

3 回答 3

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];

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

于 2010-08-09T12:38:52.680 回答
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

于 2010-08-09T12:09:40.247 回答
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];
}
于 2013-12-07T20:15:21.040 回答