创建一个类似于UITableViewCell的可重用UIView

嗨!

我试图创建一个可重复使用的UIView(出于各种原因),类似于UITableViewController中使用的UITableViewCell实现。 我想在UIScrollView中使用可重用的视图,所以我知道我并不是想要实现一些完全无法实现的功能。

这个的默认实现是:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //declare cell identifier
    static NSString *cellIdentifier = @"cell_identifier";

    //dequeue cell
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    //check cell is valid
    if(cell == nil)
    {
        //create a new cell
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
    }

    //

    //return cell
    return cell;
}

从这里,值得注意的是,该单元格从UITableView出列。 如果该单元格无效,则会创建一个新单元格。 我的问题是,这个单元如何在稍后被“排队”重用?

我目前的尝试实施看起来像这样:

- (TestScrollViewCell *)scrollView:(TestScrollView *)_scrollView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //declare cell identifier
    static NSString *cellIdentifier = @"cell_identifier";

    //dequeue cell
    TestScrollViewCell *cell = (TestScrollViewCell *)[scrollView dequeueReusableCellWithIdentifier:cellIdentifier];

    //check cell is valid
    if(cell == nil)
    {
        //create a new cell
        cell = [[TestScrollViewCell alloc] initWithFrame:CGRectZero];
    }

    //

    //return cell
    return cell;
}

我在考虑在我的TestScrollView中添加一个NSMutableDictionary来存储cellIdentifier和TestScrollViewCell(UIView),然后根据字典键将它们拔出来将是一个好的开始,但这真的是一个真正的“可重用”单元实现吗?

我可以看到的问题是,我会将UIView添加到基于框架定位的ScrollView。 在这种意义上离开视图不会允许我在不影响第一个视图的情况下(通过修改框架)将视图添加到滚动视图中,但当然这是UITableViewCells的工作原理以及节头/页脚?

我一直在寻找这个实现,它似乎遵循了我打算实现的相同的路线,但我并没有100%的销售,这是可重用细胞的真正实现。

以前有没有人有过这样的运气? 我试图让苹果公司在这一块上领先,但除了UITableViewCell和MKAnnotationView(MapKit)以外,没有任何这种可访问的实现供我从中收集。

任何帮助将不胜感激。


这不仅仅是视图,它是你需要重新创建的整个UITableViewController。 重用流程如下: dequeueReusableCell从NSMutableArray(从数组中获取第一个对象,然后将其从数组中删除并返回)从某些存储中获取空的重用单元格。 如果数组为空,则方法返回nil。 你检查单元格的值,如果它是零,你创建一个新的单元格类的实例。 如果不是零,则填写您的数据。 这适用于每个可见单元格,即每个可以放在屏幕上的单元格。 任何不可见的单元格都未初始化。 当用户滚动表格时,完全离开屏幕的单元格(不是单个像素可见)发送到reuseQueue--所有子视图和值都返回到默认值或仅仅被删除,然后单元格被添加到我们的NSMutableArray的末尾是队列。 我希望我解释得很好。 编辑:哦,还有一件事 - 你将需要不同的重用队列为每个重用标识符。

链接地址: http://www.djcxy.com/p/10373.html

上一篇: Creating a reusable UIView similar to UITableViewCell

下一篇: Getting started with MacRuby and Xcode 4.2