【问题标题】:Assigning custom image to UIBarButtonItem将自定义图像分配给 UIBarButtonItem
【发布时间】:2016-02-15 20:55:25
【问题描述】:

我正在尝试将自定义动态图像分配给导航项;通过执行以下操作,图像显示但按钮不会触发其操作 - 它甚至不会注册点击,因为它已被禁用:

-(void) updateSanghaButton{
    UIImage* sanghaImage=[[SanghaModelProvider sharedProvider] burnedImageForMeditators];
    UIImageView* sanghaView=[[UIImageView alloc] initWithImage:sanghaImage];
    self.sanghaNavigationButton.customView=sanghaView;
    self.sanghaNavigationButton.target=self;
    self.sanghaNavigationButton.action=@selector(showSangha:);
    self.sanghaNavigationButton.enabled=YES;
}

相反,如果我使用代码:

UIBarButtonItem *graphButton = [[UIBarButtonItem alloc] initWithImage:   [UIImage imageNamed:@"GraphButton.png"]
                                                             style:UIBarButtonItemStyleBordered
                                                               target:self
                                                               action:@selector(graphButton)];
self.navigationItem.rightBarButtonItem = graphButton;

UIBarButtonItem Custom view in UINavigationBar,按钮触发动作,但图像不显示。

我如何实现这两个目标?

【问题讨论】:

  • 也许您需要重新加载导航或重新分配它
  • 事实上它比我想象的要容易:[self.sanghaNavigationButton setImage:sanghaImage];完成这项工作。

标签: objective-c uibarbuttonitem


【解决方案1】:

简单代码:

[self.sanghaNavigationButton setImage:sanghaImage];

只是做这项工作。当然假设按钮已经在故事板上并且有一个出口,就像我自己的情况一样。

【讨论】:

    【解决方案2】:

    试试这个。

    UIButton *btnSetting = [UIButton buttonWithType:UIButtonTypeCustom];
            [btnSetting setBackgroundImage:imgSetting forState:UIControlStateNormal];
            btnSetting.frame = CGRectMake(0, 7, imgSetting.size.width, imgSetting.size.height);
            [btnSetting addTarget:self action:@selector(showSangha:) forControlEvents:UIControlEventTouchUpInside];
    
        UIBarButtonItem *rightbaritem=[[UIBarButtonItem alloc]initWithCustomView:btnSetting];
    
     self.navigationItem.rightBarButtonItems=@[rightbaritem];
    

    【讨论】:

      【解决方案3】:

      首先确定

      关于你的 UIImage 不是 nil 。 之后,您可以通过这种方式使用自定义图像设置导航栏:

       self.sanghaNavigationButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"myButtonImage"] style:(UIBarButtonItemStylePlain) target:self action:@selector(myAction)];   
       self.navigationItem.rightBarButtonItem = self.sanghaNavigationButton;
      

      【讨论】:

        【解决方案4】:
        UIImage* imagebackbutton = [UIImage imageNamed:@"splace_logo"];
            UIButton *btnback = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
            [btnback setBackgroundImage:imagebackbutton forState:UIControlStateNormal];
            [btnback addTarget:self action:@selector(goBack:) forControlEvents:UIControlEventTouchUpInside];
            UIBarButtonItem *mailbutton =[[UIBarButtonItem alloc] initWithCustomView:btnback];
        

        【讨论】:

        • self.navigationItem.leftBarButtonItem=mailbutton;
        猜你喜欢
        • 2018-10-31
        • 1970-01-01
        • 2020-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-10
        相关资源
        最近更新 更多