【问题标题】:How can I edit a manually added UINavigationBar sub view in interface builder using storyboards?如何使用情节提要在界面构建器中编辑手动添加的 UINavigationBar 子视图?
【发布时间】:2014-05-24 20:58:01
【问题描述】:

我添加了一个 UIView 作为导航栏的子视图,并调整了它的大小使其看起来像一个工具栏。

它将包含 3 个按钮:

  • 用于更改集合视图中服装项目的样式
  • 一个用于过滤结果,例如最爱、推荐等
  • 一个用于优化结果

我更喜欢创建这些按钮并在界面生成器中进行所有编辑。这可能吗?

这是我当前用于创建视图的代码:

@interface MyCollectionViewController () <UIScrollViewDelegate>

@property (nonatomic, weak) UIView *filterBar;

@end

@implementation MyCollectionViewController

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    UIView *filterBar = [[UIView alloc] initWithFrame:CGRectMake(0, 42, self.view.frame.size.width, self.navigationController.navigationBar.frame.size.height)];

    [[[self navigationController] navigationBar] addSubview:filterBar];
    [filterBar setBackgroundColor:[[UIColor whiteColor] colorWithAlphaComponent:0.9f]];
    [filterBar setTag:1];
}

我的按钮将类似于触发 UIActionSheet 实例或将其他控制器推送到堆栈顶部的选择按钮,在那里我可以提供执行操作的界面,例如细化衣服类型然后搜索。

这是我正在谈论的带有栏的应用的照片:

无论如何,这是否可能,我可以将我在上面的代码中创建的视图链接到界面构建器中,并以可视方式而不是在代码中处理它吗?

感谢您的宝贵时间。

亲切的问候

【问题讨论】:

    标签: ios objective-c xcode cocoa-touch uiview


    【解决方案1】:

    在 Interface Builder 中,您可以将 UIView 拖到 UINavigationBar 中的 UINavigationItem:

    您刚刚拖动的这个视图可以通过以下方式访问:

    self.navigationItem.titleView
    

    您还可以将按钮或您放在该视图中的任何内容链接到您的 .m 文件

    【讨论】:

      【解决方案2】:

      简短的回答:你不能真的...

      Storyboards/IB 不允许对 UINavigationBar 进行太多自定义,除了设置标题和左/右 barButtonItems。您想做的大部分(看起来)必须使用自定义 UIView 子类在代码中完成。

      更长的答案:

      要使用标准 UINavigationBar,您需要将顶部的菜单、搜索、星号和手提箱 (?) 图标添加为设置为左侧和右侧的 barButtonItems 数组。这只能在代码中完成(您可以使用分段控件,但无论如何都需要在代码中自定义外观)。 有关示例,请参见此处的第二个响应:How to add multiple buttons to a NavigationBar?

      对于第二个“过滤器”行,看起来它必须是一个单独的视图,就像您已经完成的那样单独创建和添加,但理想情况下是自定义 UIView 子类的实例。您不能在 IB 的导航栏中扩展/添加这么多东西。

      创建一个新的 UIView 子类。然后在 IB 中拖出/调整 UIview 的大小并将其设置为您的自定义类。然后,您可以拖出项目以近似您的设计。 问题是 IB 只有库存的 UIKit 项目,并且自定义它们的选项可能会受到限制。

      • 集合视图切换可以是一个分段控件,但是你 只能更改/删除代码中默认的蓝色圆角边框,所以 你没有保存任何工作。

      • 您的中间“过滤器”下拉菜单必须是 UIPickerView
        (微调器),或者可能是 UITableView 子类。这些中的任何一个你都会
        无论如何都必须单独编码。

      • 右侧的“优化”按钮可能只是一个简单的 UIButton w/a
        标签。您必须更改默认颜色并在代码中添加边框或使用自定义图像(因为 iOS7 删除了按钮边框)。

      您真的不妨编写代码。 IB 不会为这么多自定义元素节省太多时间或精力......

      【讨论】:

      • 我最终发现这太麻烦了,决定用代码来做。没有我想象的那么难。
      • 很酷 - 好问题,而且设计看起来不错。让我有机会思考我自己应该怎么做……~干杯
      猜你喜欢
      • 2016-10-28
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多