UITableView粘性页脚/自定义工具栏实现

时间:2012-09-24 18:46:23

标签: iphone ios delegates uitableview

我使用的是UITableViewController,我想要做的是在UIView下添加自定义工具栏。

我已尝试启用navigationController(下面的代码)的工具栏,但它似乎无法正常工作。 UITextField不会调用代理人,文本字段的按键不会显示在文本字段中。

使用像这样的工具栏不是我的第一选择,我想在我的UITableViewController下我的自定义视图,我可以放置我的项目,就像一个UIToolbar。 (保持为UIView页脚)

代码:

    self.navigationController.toolbarHidden = NO;
    // create toolbar objects
    UITextField *inputField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 230, 31)];
    inputField.backgroundColor = [UIColor clearColor];
    inputField.borderStyle = UITextBorderStyleRoundedRect;
    inputField.inputAccessoryView = self.navigationController.toolbar;
    inputField.returnKeyType = UIReturnKeyDone;
    inputField.delegate = self;


    UIButton *sendButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 30)];
    sendButton.titleLabel.text = @"Send";
    sendButton.backgroundColor = [UIColor greenColor];

    // add objects into navigation controller
    self.toolbarItems = [NSArray arrayWithObjects:
                         [[UIBarButtonItem alloc] initWithCustomView:inputField],
                         [[UIBarButtonItem alloc] initWithCustomView:sendButton], nil];

1 个答案:

答案 0 :(得分:5)

除了为您的实现创建UITableViewController子类外,您可能会发现更简单地为普通UIViewController创建子类并向其添加UITableView。这将使您在自定义布局方面具有更大的灵活性。

基本上步骤是:

  1. 让您的类继承自UIViewController(而不是UITableViewController)
  2. 上课 实现UITableViewDelegate和UITableViewDataSource 协议
  3. 实现UITableViewDelegate和 类中的UITableViewDataSource方法(例如cellForRowAtIndexPath:,didSelectRowAtIndexPath:等)
  4. 在IB中,添加一个 UITableView作为视图控制器视图的子视图
  5. 设置 刚刚添加的表视图的委托和数据源属性 成为你的viewcontroller类
  6. 调整框架的大小 UITableView允许输入字段和按钮的底部空间
  7. 这样你可以将inputField和button添加到viewController的视图(在底部),它们不会滚动,因为它们与tableview是分开的。