将故事板原型单元与自动填充数据混合

时间:2014-11-02 20:09:23

标签: ios objective-c uitableview

我有UITableView的自动填充NSMutableArray。我需要在故事板中构建的原型中将静态单元格添加到表格的顶部。这样做的正确方法是什么?

当我刚刚将原型添加到故事板编辑器时,它首先覆盖了第一个单元格。重新加载数据后,它最终将显示在其他单元格下。

制作"空间"为此,我制作了可编辑的桌子"使用以下代码 -

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.editing ? wOutputArray.count + 1 : wOutputArray.count;   
}

现在它并没有涵盖任何细胞,但似乎它没有家。在初始视图中将其加载到表格的顶部,然后在几次刷新之后它最终会回落到表格的底部。

编辑:

我读到你不能将静态细胞与动态细胞混合,并且表格应该分成几个部分。

所以我在这里改变了 -

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableViewB{
    return 2;
}

&安培;

- (NSInteger)tableView:(UITableView *)tableViewB numberOfRowsInSection:(NSInteger)section{
    switch(section){
        case 0:
            return  1;
            break;
        case 1:
            return  wOutputArray.count;
            break;
    }
    return 0;
}

但我不确定下一步该做什么......这是正确的方向吗?

1 个答案:

答案 0 :(得分:1)

从技术上讲,您要使用的两种类型的单元格都是原型单元格 - 它们只是不同类型的单元格。

如果您只想在其他人的顶部放置一个静态单元格,那么您需要做的只是在表数据源方法中考虑它。

首先让tableview知道会有1+(动态细胞计数)细胞

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return wOutputArray.count + 1    
}

其次,在cellForRowAtIndexPath中返回适当的单元格,说明indexPath.row将比数组元素多1(因为第0行是静态单元格)

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {

    var cell

    if (indexPath.row==0) {
        cell=tableView.dequeueReuseableCellWithIdentifier("staticCell",forIndexPath:indexPath)
        //  Any other manipulation as required
    }
    else {
        cell=tableView.dequeueReuseableCellWithIdentifier("dynamicCell",forIndexPath:indexPath)
        cell.label.text=wOutputArray[indexPath.row-1];  // Or whatever property you want to use
    }

    return cell!
}