【问题标题】:How to add a toolbar to a TableView in iOS如何在 iOS 中向 TableView 添加工具栏
【发布时间】:2012-10-25 03:47:12
【问题描述】:

我正在构建一个简单的笔记应用程序,我想在 TableView 的底部添加一个静态栏。例如,我想添加一个帮助按钮。我怎样才能对我的 TableView 执行此操作?

到目前为止:

我已经通过情节提要添加了一个工具栏,但这使它粘在最后一个 tableView 单元格的末尾。我希望它粘在底部。我输入此代码以编程方式执行:

@property (strong, nonatomic) IBOutlet UIToolbar *toolbar;

在我的 tableViewController.h 文件中和

[self.view addSubview:_toolbar];
[self.navigationController.view setFrame:self.view.frame];

在我的 viewDidLoad 方法中的 tableViewController.m 文件中

谢谢!

【问题讨论】:

    标签: objective-c ios toolbar


    【解决方案1】:

    最好的解决方案是使用 UIViewController 而不是 UITableViewController。 (上面已经说过了,但让我给你详细的)。

    使用其各自的 XIB 创建一个新的 UIViewController。在你的新 UIViewController 的视图中拖动一个 UITableView,调整它的大小,然后将你的 UIToolbar 拖动到任何你想要的地方。

    你应该有这样的东西:

    黑色边框代表 UIViewController 的主视图。红色边框代表表格视图。蓝色边框代表您的工具栏。

    然后,让你的 UIViewController 遵守两个协议:UITableViewDelegate 和 UITableViewDataSource。您将必须手动实现它的基本方法,例如 cellForRowAtIndexPath、numberOfRowsInSection 等,但这不会花费您很长时间。

    将你的 UITableView 链接到你的 UIViewController。也将它的“数据源”和“委托”属性链接到视图控制器。

    您将在 15 分钟内完成设置。

    【讨论】:

    • 好答案,我想是的!
    【解决方案2】:

    我刚刚发现了一个更好的技巧!

    1. 确保没有导航栏(来自您的失败尝试)
    2. 拖放一个“Bar Button Item”(Xcode 会神奇地将它放在底部)
    3. 注意:如果您现在运行应用程序,您将看不到任何东西! (所以请继续阅读)
    4. 在 viewDidLoad 下添加如下代码:

      self.navigationController.toolbarHidden = NO;

    完成!

    【讨论】:

    • 很好 - 如果你不希望它们在其他视图上设置为 false ...现在我们使用 swift
    • 好把戏!!。我想知道为什么工具栏默认会到底部。和 Apple HIG 不冲突吗?快速使用 self.navigationController?.toolbarHidden = false
    【解决方案3】:

    您可以将标准 UITableViewController 与情节提要一起使用。在“模拟指标”中,转到底部栏菜单并选择“工具栏”。工具栏出现。然后,您可以向其中添加按钮项。

    【讨论】:

    • 这是正确答案。很简单。我多年来一直在使用这种方法。为什么人们会为此大发雷霆?提供如此复杂的答案!
    【解决方案4】:

    通过代码添加工具栏很简单。

    UIToolbar *toobar = [[UIToolbar alloc]initWithFrame:frameYouNeed];
    toobar.barStyle = UIBarStyleBlack;
    [self.view addSubview:toobar];
    

    但是如果你使用 UITableView 作为 subView,而不是 UITableViewController 会更好

    【讨论】:

    • 正如@Leonnears 所说,将toolbar 和tableView 作为viewController 的两个子视图
    【解决方案5】:

    您应该使用ViewController 而不是TableViewController

    然后将您的TableView 设置为头文件中的 IBOutlet。声明委托和数据源。你准备好了。

    【讨论】:

      【解决方案6】:

      您可以使用默认包含在所有 UITableViews 中的工具栏,并将 UIBarButtonItems 添加到它。尽管名称如此,但 UIBarButtonItems 可以自定义为任何类型的视图。然后将它们添加到属性 self.toolbarItems,UITableViews 默认可以使用该属性。 例如

      UIBarButtonItem * textItem;
      UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 250, 48)];
      label.text =  @"ImportantText";
      label.adjustsFontSizeToFitWidth = YES;
      label.textAlignment = NSTextAlignmentRight;
      textItem = [[ UIBarButtonItem alloc ] initWithCustomView:label];
      
      UIBarButtonItem * switchItem;
      UISwitch * switchCtrl = [[UISwitch alloc] init];
      [switchCtrl addTarget:self action:@selector(toggleSomething:) forControlEvents:UIControlEventValueChanged];
      switchItem = [[ UIBarButtonItem alloc ] initWithCustomView:switchCtrl];
      
      self.toolbarItems = [ NSArray arrayWithObjects:
                           [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                           textItem,switchItem,nil ];
      

      【讨论】:

        【解决方案7】:

        通过选中导航控制器中的显示工具栏,我在情节提要中得到了这个工作。然后将 Bar Button Items 拖到现在显示在 Table View Controller 底部的灰色工具栏区域。然后将 Bar Button Items 连接到方法 Navigation Controller。

        【讨论】:

          【解决方案8】:

          试试这个,它会将您的工具栏添加为表格的footerView。并确保将表格的页脚高度设置为 44(工具栏的高度)。

          self.tableView.tableFooterView = _toolbar;
          

          【讨论】:

          • 谢谢,我试过了,但没用。也许我做错了什么?
          • 只是将工具栏粘贴在 tableView 下而不是屏幕底部。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多