如何将 Storyboard headerview 添加到 UITableViewController 初始化时创建的 tableview

How to add Storyboard headerview to tableview created at initialization by UITableViewController

我有一个 UITableViewController 的子类。

默认情况下,它会在初始化时创建一个UITableView。对于该表视图,我在控制器控制的屏幕中设置了我在 Interface Builder 中创建的 header。 header 有两个按钮:

一个进入表格视图的编辑模式(称为 "Edit")

将随机项目添加到表视图(称为 "New")。

我将名为 headerViewIBOutlet 属性 链接到 Interface Builder 中的 header 并将其设置为 header 12=] 在 viewDidLoad 方法初始化时创建。

问题是,当我按下 "New" 按钮(向表格视图添加一个新行和一个新项目)时,表格视图的 header 下降到表格视图的底部.

知道为什么吗?我怎样才能让它保持在顶部?

这是viewDidLoad方法:

- (void)viewDidLoad {
        [super viewDidLoad];
        [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"UITableViewCell"];
        [self.tableView setTableHeaderView:self.headerView];
    }

这是按下 "New" 按钮时执行的方法:

- (IBAction)addNewItem:(id)sender {
    Item *newItem = [[ItemStore sharedStore] createItem];
    NSInteger lastRow = [[[ItemStore sharedStore] allItems] indexOfObject:newItem];
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:lastRow inSection:0];
    [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop];

}

谢谢。

可能您以错误的方式设置了 table header 视图的布局。它有任何布局限制吗?

顺便说一句,this project on GitHub 是一个非常简单的示例,用于演示在故事板中实现您想要的内容是多么简单。它将产生如下结果:

请使用此项目与您当前的配置进行比较。 我希望这会以某种方式有所帮助。