标签: uibarbuttonitem

UIBarButtonItems 以错误的顺序出现

我有一个带有单个 UIViewController 的单触摸测试应用程序。我想添加 3 个 UIBarButtonItems

    UIBarButtonItem b1 = new UIBarButtonItem(UIBarButtonSystemItem.Action);
    UIBarButtonItem b2 = new UIBarButtonItem(UIBarButtonSystemItem.Add);
    UIBarButtonItem b3 = new UIBarButtonItem(UIBarButtonSystemItem.Bookmarks);

    this.NavigationItem.SetRightBarButtonItems(new [] {b1,b2,b3}, true);
Run Code Online (Sandbox Code Playgroud)

不幸的是,它们出现的顺序错误。首先我看到 b3,然后是 b2,最后是 b1。我想要实现的目标是让 UIBarButtonItems 按以下顺序出现 b1、b2、b3。

难道我做错了什么?

uibarbuttonitem xamarin.ios ios

2
推荐指数
1
解决办法
478
查看次数

Safari 风格的后退按钮

我在 stackoverflow 上没有找到如何为UIBarButtonItem. 有没有一种简单而优雅的方法来实现像 Safari 中那样的后退按钮?

Safari 工具栏截图

uibarbuttonitem ios swift

2
推荐指数
1
解决办法
1939
查看次数

iOS 自定义导航栏后退按钮标题在点击时消失

你好 StackOverflow 社区,

我有一个相当奇怪的情况,导航控制器的导航栏上的自定义后退按钮在交互时消失。

一些附加信息是我的代码没有使用 Storyboard,而是使用 UIKit - 包括 UI 在内的所有内容都是以编程方式构建的。

这是我的设置:

  • 我首先创建一个自定义 UINavigationController 子类,以抽象出所有与导航控制器相关的自定义项

  • 在这个子类中,我有一个被调用的方法来自定义后退按钮的外观

private func customizeBackButton() {
    let backImage = UIImage(named: "BackButton")?.withRenderingMode(.alwaysOriginal)
    navigationBar.backIndicatorImage = backImage
    navigationBar.backIndicatorTransitionMaskImage = backImage
    
    UIBarButtonItem.appearance().setTitleTextAttributes([
      NSAttributedString.Key.foregroundColor: UIColor.panoStoryYellow,
      NSAttributedString.Key.font: UIFont(name: "Montserrat-SemiBold", size: 15)!
    ], for: .normal)
}
Run Code Online (Sandbox Code Playgroud)
  • 上面的自定义给出了以下结果,这正是我想要的结果,图库是我上一个屏幕的标题

UINavigationController 自定义后退按钮

  • 当我点击箭头所在的后退按钮的最左边缘时,该按钮正常工作。但是,如果我点击后退按钮的标签部分(图库文本所在的位置),文本就会消失并使用户保持在同一屏幕上。

UINavigationController UINavigationBarButton后退按钮消失

当我在标签消失后点击后退箭头时,它会起作用并将我带回到上一个屏幕,但是,为什么会发生这种消失呢?

我尝试过什么 我尝试过许多关于堆栈溢出的建议,例如:

  • 确保我的代码中没有任何行显式隐藏后退按钮
  • 随时检查上一屏幕的标题是否为空字符串

我可以确认这些不是问题,因为我有有效的标题并且从不隐藏后退按钮。

以下是我在确定它们都不适合我的情况之前检查过的一些资源,我在这里提出了问题:

UINavigationController 后退按钮不可见,但可以使用

UINavigationController的后退按钮消失了?

使用自定义后退按钮后导航标题消失

按下后退按钮时,上一屏幕上的导航标题消失

连续推送 ViewController 时缺少导航或后退按钮的标题

关于为什么这个后退按钮文本消失的任何想法?

uikit uinavigationcontroller uibarbuttonitem ios swift

2
推荐指数
1
解决办法
795
查看次数

如何使用无线电接口创建UIBarButtonItems?

我有一个UIToolbar需要三个无线电样式的按钮,这意味着三个按钮,一次只能按一个按钮.该文档提到了在width属性的类引用定义中设置无线电UIBarButtonItems的可能性:

如果此属性值为正,则组合图像和标题的宽度是固定的.如果值为0.0或负值,则该项目将组合图像和标题的宽度设置为适合.如果样式使用无线电模式,则忽略此属性.默认值为0.0.

但是,我在UIKit框架参考中找到了"无线电",我找不到任何以无线电方式提到的UIBarButtonItems.我知道我可以使用TabBar作为无线电接口,但TabBar与我的UI(普通按钮+单选按钮)的用途并不完全相符.我看到日历应用程序在无线电样式(List,Day,Month)中使用UIBarButtonItems,所以看起来这应该在API中的某个地方并由HIG批准.这隐藏在某处还是我必须使用自定义视图创建UIBarButtonItems?

iphone cocoa-touch uikit uibarbuttonitem

1
推荐指数
1
解决办法
1073
查看次数

UITableView setEditing为NO不会更改barButtonItem

我有一个UITableViewController内心UINavigationController.我正在设置rightBarButtonItem编辑按钮:

self.navigationItem.rightBarButtonItem = self.editButtonItem;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这很好用,在我打电话后tableView:commitEditingStyle:forRowAtIndexPath:我用编程方式改变了我tableView的编辑模式:

[self.tableView setEditing:NO animated:YES];
Run Code Online (Sandbox Code Playgroud)

这里奇怪的是,barButtonItem仍然似乎处于"编辑模式",因为它仍然像我在编辑模式时那样"完成".单击它会将按钮更改回"编辑",然后我必须单击"再次"以将其恢复为编辑模式.

在此输入图像描述

为什么不barButtonItem从编辑模式改变?

cocoa-touch objective-c uitableview uibarbuttonitem ios

1
推荐指数
1
解决办法
978
查看次数

禁用用户与UIBarButtonItem的交互

虽然我的应用程序运行一个简短的动画,但我不希望用户能够点击任何内容.在我的视图控制器中我可以使用

    self.view.userInteractionEnabled = NO;
Run Code Online (Sandbox Code Playgroud)

阻止大多数交互,但它不会阻止工具栏/导航栏中的按钮触发事件.

我不能只是禁用按钮,因为这会产生令人分心的视觉冲击(按钮呈灰色).

我怎样才能暂停与所有控件的交互?

cocoa-touch uiviewcontroller uiview uibarbuttonitem ios

1
推荐指数
1
解决办法
1415
查看次数

UIBarButtonItem不触发其动作方法

在viewDidLoad中: - (void)viewDidLoad {[super viewDidLoad];

[self.navigationController setNavigationBarHidden:YES animated:NO];

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
NSMutableArray *toolBarItems = [[NSMutableArray alloc] init];
[toolBarItems addObject:[[UIBarButtonItem alloc] initWithTitle:@"Articles" style:UIBarButtonItemStyleBordered target:self action:@selector(backButtonTapped)]];
[toolBarItems addObject:[[UIBarButtonItem alloc] initWithTitle:@"Source" style:UIBarButtonItemStyleBordered target:self action:nil]];
[toolBarItems addObject:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]];
[toolBarItems addObject:[[UIBarButtonItem alloc] initWithTitle:@"Aa" style:UIBarButtonItemStyleBordered target:self action:nil]];
[toolBarItems addObject:[[UIBarButtonItem alloc] initWithTitle:@"Rabbit" style:UIBarButtonItemStyleBordered target:self action:nil]];
[toolBar setBackgroundImage:[[UIImage alloc] init] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
toolBar.items = toolBarItems;
[self.view addSubview:toolBar];
Run Code Online (Sandbox Code Playgroud)

方法:

- (void)backButtonTapped {
    [self.navigationController popViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)

我在方法内部的调用上有一个断点但它永远不会被调用.为什么这种方法永远不会被调用?

objective-c uitoolbar uibarbuttonitem ios

1
推荐指数
1
解决办法
5279
查看次数

如何设置带边框的UIBarButtonItem

我用barbutton创建了如下视图

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"settingsicon.png"] style:UIBarButtonItemStylePlain target:self action:@selector(settingsButtonClicked:)];
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

它是这样的,但我想要它

在此输入图像描述

如何删除按钮的边框?

iphone cocoa-touch uibarbuttonitem ios

1
推荐指数
2
解决办法
4077
查看次数

将相同的UIBarButtonItem添加到几个UIViewControllers

我想将其添加UIBarButtonItem到几个UIViewControllers中.我之前通过创建一个UIViewController设法添加UIBarButtonItems 的父级来完成此操作viewDidLoad.但是现在我有许多视图控制器从不同的视图控制器继承,所以如果我遵循相同的策略,我应该UIViewController为每个不同的视图控制器创建一个子类.

我实际上做的是在我BaseViewController的所有其余的父控制器中配置导航栏按钮,具体取决于我在创建子视图控制器时设置的标志.使用此解决方案,代码只依赖于一个视图控制器,但我想如果有更多优雅的选项来实现这一点.

uinavigationbar uiviewcontroller uinavigationcontroller uibarbuttonitem ios

1
推荐指数
1
解决办法
280
查看次数

UIBarButtonItem选择器不起作用

我有一个嵌入导航控制器的MainViewController,如下所示:
在此输入图像描述

在MainViewController.swift中,我以编程方式添加了两个UIBarButtonItem(左和右):

class MainViewController: UIViewController {

    let rightButton = UIBarButtonItem(title: "Right", style: .plain, target: self, action: #selector(onRightClick))
    let leftButton = UIBarButtonItem(title: "Left", style: .plain, target: self, action: #selector(onLeftClick))

    override func viewDidLoad() {
        super.viewDidLoad()
        navigationItem.rightBarButtonItem = rightButton
        navigationItem.leftBarButtonItem = leftButton
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @objc func onRightClick() {
        print("[Main] Right Click")
    }

    @objc func onLeftClick() {
        print("[Main] Left Click")
    }
}
Run Code Online (Sandbox Code Playgroud)

按钮确实显示在屏幕上,但有趣的是,选择器功能onLeftClick,onRightClick每当我按下向左或向右按​​钮时都不会被调用.我有什么办法让它有效吗?我正在使用Xcode 9.3.

selector uibarbuttonitem swift

1
推荐指数
2
解决办法
1303
查看次数