UITableView水平单元格分隔线不向上或向下滚动

时间:2009-12-17 02:44:40

标签: iphone uitableview xamarin.ios

我已经编写了一些MonoTouch代码来显示Nib'less UITableView,并且在初始显示时,视图看起来很可靠。然而,当我触摸向下滚动以查看更多数据时,我最终得到一个双网格图案,其中包含静态水平单元格分隔线,这些线条不随滚动动作移动,另外还有另一组或水平单元格分隔线,这些线条间距正确且随之移动向下滚动动作。

向上滚动到表格视图的顶部后,静态和动态水平线完美同步,屏幕看起来正常。进一步滚动会重现问题。

我使用默认的UITableViewCell对象来填充表格行。

我可能无法配置Interface Builder正常做的事情。有任何想法吗?希望Objective-C人员能够解释.Net代码。

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();

    _tableView = new UITableView()
    {
        Source = new TableSource(),
        AutoresizingMask = UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleWidth,
        BackgroundColor = UIColor.White
    };
    _tableView.SizeToFit();
    _tableView.Frame = new RectangleF ( 0, 0, this.View.Frame.Width, this.View.Frame.Height );
    this.View.AddSubview( _tableView );

更新1:我担心额外的水平单元分隔线组会从导航控制器堆栈中呈现的上一个视图中流出。所以我重新订购了应用程序,使有问题的表成为应用启动时显示的第一个视图,但问题仍然存在。

更新2:已添加

tableView.SeparatorStyle = UITableViewCellSeparatorStyle.None;

这避免了双重水平线的设置,但是当表格视图滚动时,我仍然留下与单元格中间相交的静态水平线。

更新3:有一个模糊的理论,这与单元格高度配置不匹配或背景填充问题有关,因此水平线可能代表表格视图中未上漆的像素。我不确定如何测试这个理论?

1 个答案:

答案 0 :(得分:3)

找到解决方案。上面的代码示例已经从blogshere中的第三方MonoTouch示例应用程序中采用。该代码似乎创建了两个完全重叠的UITableViews,静态网格线可能来自z顺序中空洞且更深的UITableView,它没有响应任何触摸滚动手势。

如上所示,无需手动实例化UITableView对象,因为UITableViewController类为我们执行此操作,因此AddSubview()调用是多余的。

以下是适用于我的代码:

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();
    this.TableView.Source = new TableSource();
}