0
- (void)viewDidLoad
{

    [super viewDidLoad];

    //Load the image   
    UIImage *buttonImage = [UIImage imageNamed:@"1.png"];

    //create the button and assign the image
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:buttonImage forState:UIControlStateNormal];

    //sets the frame of the button to the size of the image
    button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height);

    //creates a UIBarButtonItem with the button as a custom view
    UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button];
    customBarItem.target = self;
    customBarItem.action = @selector(click:);

    self.toolbarItems = [NSArray arrayWithObjects:customBarItem, nil];
}

- (void)click:(id)sender {
    NSLog(@"action");
}

我认为当我按下 barItem 时,我的控制台会打印“动作”。但是“动作”没有打印出来。我错过了什么吗?感谢提前!

4

3 回答 3

2

试试这个

UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithTitle:@"Click ME!" style:UIBarButtonItemStyleBordered target:self action:@selector(click)];

.
.
.

-(void)click{
    NSLog("hello");
}
于 2012-07-17T12:19:10.867 回答
1

我相信问题是当你应该简单地传递 a 时,你正在使用 a UIButton,该动作可能会转到 the而不是.[[UIBarButtonItem alloc] initWithCustomViewUIViewUIButtonUIBarButtonItem

而是这样做:

UIImageView *myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1.png"];
UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:myImageView];
于 2012-07-17T12:23:55.623 回答
1

我认为您正在尝试做更多类似的事情:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:buttonImage forState:UIControlStateNormal];
[button setFrame:CGRectMake(0.0f, 0.0f, 25.0f, 25.0f)];
[button addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button];
于 2012-07-17T12:25:38.657 回答