2009-12-17 121 views
2

我已经编写了一些MonoTouch代码来显示Nib'less UITableView,并且在初始显示时视图看起来没有填充单元数据。然而,当我触摸向下滚动查看更多数据时,我最终得到一个双网格图案,其中包含静态水平细胞分隔线,它们不随滚动操作一起移动,另外还有另一组或水平细胞分隔线,向下滚动操作。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:有一个模糊的理论,这与单元格高度配置不匹配或背景填充问题有关,因此水平线可能表示表视图中未上漆的像素。我不确定如何测试这个理论?

回答

3

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

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

下面是对我的作品的代码:

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