【问题标题】:UIBarButtonItem not showing imageUIBarButtonItem 不显示图像
【发布时间】:2013-09-18 02:04:06
【问题描述】:

我的导航栏有问题。问题是我试图覆盖 NavigationBar 从超级 viewController 拥有的 LeftBarButtonItem,如下所示:

“超级视图控制器”

UIImageView *logoApp = [[UIImageView alloc] initWithImage:[UIImageimageNamed:@"logo.png"]];
[logoApp setFrame:CGRectMake(5, 5, 55, 30)];
UIBarButtonItem *containingLogoApp = [[UIBarButtonItem alloc] initWithCustomView:logoApp];
self.navigationItem.leftBarButtonItem = containingLogoApp;

现在我正在尝试在不同的 viewControllerB 中覆盖它,如下所示:

UIImageView *backImg = [[UIImageView alloc] initWithImage:[UIImageimageNamed:@"back.png"]]; 
[logoApp setFrame:CGRectMake(5, 5, 17, 22)];
UIBarButtonItem *containingBackButton = [[UIBarButtonItem alloc]initWithCustomView:backImg]; 
self.navigationItem.leftBarButtonItem = containingBackButton;

这是相同的代码,并且仅在应用程序第一次运行时才有效。如果我再次运行它,它不会再显示在ViewControllerB 中分配的图像。我项目中的每个图像都会发生这种情况,它仅在我第一次在模拟器上运行应用程序时才有效,在第一次运行之后......就像什么都没有发生一样。

如何覆盖 leftBarButtonItem?

【问题讨论】:

    标签: iphone ios objective-c uinavigationcontroller uinavigationitem


    【解决方案1】:
    UIButton *backButton =  [UIButton buttonWithType:UIButtonTypeCustom];
    [backButton setImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal];
    [backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
    [backButton setFrame:CGRectMake(0, 0, 50, 30)];
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
    

    【讨论】:

    • 感谢您的快速回复,但结果相同,没有任何反应!我创建了“backAction”选择器,但它没有被调用!!!正如我所说,在 ViewControllerB 的 ViewDidLoad 中似乎没有发生与 navigationBar 相关的事情:(
    • @VaroX 使用 self 工作吗? [backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
    • 不,这是我现在拥有的: UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; [backButton setImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal]; [backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside]; [backButton setFrame:CGRectMake(0, 0, 50, 30)]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
    【解决方案2】:

    试试这个代码

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"dynamic_blue_left.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(rightSwipeClicked:)];
    self.navigationItem.leftBarButtonItem = backButton;
    

    它工作正常..可能对你有用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多