2

我已经编写了一些 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:有一个模糊的理论,这与单元格高度配置不匹配或背景填充问题有关,因此水平线可能代表表格视图中未绘制的像素。我不知道如何检验这个理论?

4

1 回答 1

3

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

不需要像上图那样手动实例化一个 UITableView 对象,因为 UITableViewController 类为我们做了这些,所以 AddSubview() 调用是多余的。

这是对我有用的代码:

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();
    this.TableView.Source = new TableSource();
}
于 2009-12-22T14:53:14.670 回答