Drawing + UITableViewCell + UIScrollView子类?

时间:2013-11-10 16:44:43

标签: objective-c uitableview uiscrollview uikit

我(相当复杂)的情况如下:

  • TestViewUIScrollView的子类,它实现了-drawRect:,但在-drawRect:内的某个点,它会调用一个方法,让我们说-drawAnotherPartWithRect:context:。此方法由TestView的子类实现,以单独绘制上下文的某个部分。
  • TestView有两个子类,它们实现-drawAnotherPartWithRect:context:,目前在其中执行相同的事情Subclass1Subclass2。< / LI>
  • 截至目前, 帧大小 是两者在初始化期间唯一的不同。

Subclass1的一个实例用作表格视图的节标题,它完美地运行,但如果Subclass2用作单元格内容视图的子视图,它将显示,但不会滚动。它的初始化如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"PortoAppSubjectViewTableViewCell"];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"PortoAppSubjectViewTableViewCell"] autorelease];

        Subclass2 *contentView = [[[Subclass2 alloc] initWithFrame:CGRectMake(0.f, 0.f, [tableView bounds].size.width, 32.f)] autorelease];
        [contentView setContentSize:CGSizeMake(tableView.bounds.size.width * 3, 32.f)];
        [contentView setTag:55];
        [[cell contentView] addSubview:contentView];
    }

    [(SubjectTableViewCellContentView *)[[cell contentView] viewWithTag:55] setContainer:[[[[$container subGradeContainers] objectAtIndex:[indexPath section]] subGradeContainers] objectAtIndex:[indexPath row]]];

    return cell;
}

有趣的是,水平滚动指示器显示并向我显示它正在滚动,但文本(使用CoreText绘制)不会随之左右移动。这与Subclass1开箱即用。此外,如果使用Subclass2作为节标题视图的视图类,它将正常工作。

那么,水平滚动视图和表视图单元格有什么用呢?我已经在SO上查看了其他相关问题,但未能找到任何解决方案。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,而不是直接绘制到UIScrollView子类,绘制为UIView子类添加为UIScrollView的子视图。

我仍然喜欢一些跟进,因此问题没有得到解答 - 为什么它与标题视图一起使用而不是表视图单元呢?