【问题标题】:Populating a simple UITableView in MonoTouch with UITableViewDataSource - how to use UITableViewDataSource在 MonoTouch 中使用 UITableViewDataSource 填充一个简单的 UITableView - 如何使用 UITableViewDataSource
【发布时间】:2012-05-04 20:36:27
【问题描述】:

到目前为止,我很喜欢 MonoTouch,但是一旦您完成了一些初学者课程,就会发现缺少文档和示例。

我正在努力解决在 MonoTouch 中填充简单 UITableView 的简单概念。我已经看到使用自定义单元格执行此操作的示例,并使用不同的信息广泛自定义列表,但我只是在寻找如何实现这个简单事情的最低限度。我是一名专业的 .NET 开发人员,并且对 iOS 非常陌生,所以我仍然在思考它是如何工作的。

我只想要以下内容。 创建项目列表 将该项目列表分配给 UITableView 以允许用户滚动列表。寻找一个非常非常简单的例子。

我最苦恼的事情是创建一个 UITableViewDataSource 对象。它是抽象的,所以我无法创建它的实例。我可以创建自己的继承它的类,但我正在框架中寻找一个具体的实现来使用,而不必创建我自己的。是我被 .NET 宠坏了,必须为其创建一个新类,还是它存在于框架中的某个地方而我只是找不到它?

[在此回答] 我找到了答案,但 StackOverflow 不会让我以低于 100 的声誉回答我自己的问题,或者除非我等待 8 小时,否则我不愿意这样做。答案如下:

我创建了以下继承 UITableViewSource 的类。这样做是必要的。 GetCell 控制如何在表格上呈现单元格。

创建此实例并传入要填充的字符串列表。

这个例子来自(我稍微修改了一下)我从 Wrox Press 阅读的书 - “Professional iPhone Programming with MonoTouch and .NET C#”

public class TableViewSource : UITableViewSource
{
    private List<string> rows;

    public TableViewSource (List<string> list) 
    { 
            rows = list; 
    }

    public override int RowsInSection (UITableView tableview, int section) 
    { 
        return rows.Count; 
    }

    public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
    {  
        UITableViewCell cell = new UITableViewCell(UITableViewCellStyle.Default,"mycell"); 
        cell.TextLabel.Text = rows[indexPath.Row];
        return cell;
    } 
}

将以下代码放入屏幕上的 ViewDidLoad 中。

var list = new List<String>()
{   
    "San Francisco",    
    "Buenos Aires", 
    "São Paulo"
};

TableViewSource tableData = new TableViewSource(list);
this.tblTrips.Source = tableData;

这给了我我正在寻找的东西,而无需深入研究 MonoTouch.Dialog

【问题讨论】:

    标签: c# ios uitableview xamarin.ios


    【解决方案1】:

    UITableView 以及相关的委托和数据源类型并不是一个非常友好的 API——对于典型的 .NET 开发人员来说更是如此。有时需要它,但在大多数情况下,您会希望使用更简单的东西。

    创建项目列表 将该项目列表分配给 UITableView 以允许用户滚动列表。寻找一个非常非常简单的例子。

    这似乎符合MonoTouch.Dialog 的目标。该组件现在随 MonoTouch 一起提供,但您可以在 github 上找到 sample source code

    Xamarin 的文档网站也有一个 tutorial 用于使用 MonoTouch.Dialog 和一个不错的 video 也可用。

    【讨论】:

    • 我很感激您的建议,我将来可能会对此进行研究。但是,公平地说,我一直在寻找如何在单声道中使用现有对象,我找到了一个例子,让我在我正在阅读的书中做到这一点。请看下面我的回答。现在我了解了它的工作原理以及如何使用 GetCell 来呈现单元格,并且需要创建我自己的 UITableViewSource 实现,我想我已经很好地理解了这一点。
    • MT.Dialog 是一个很棒的工具,但我同意你确实需要了解如何在本地使用 TableViews - 它们是 iOS UI 的核心部分。我很惊讶 Xamarin 在他们的文档库中没有很好的示例。
    • 由于我无法以低于 100 的声望回答我自己的问题,所以这个问题将无法回答。这太糟糕了,因为我的回答会真正帮助社区。根据 StackOverflow 规则,当我有资格回答时,我会在 8 小时内忘记回答。 [我强烈不同意这条规则] - 我会将答案作为问题的一部分发布以解决这个问题......
    • 稍后我会查看 MT.Dialog。现在只是学习 MT 和 iOS 开发/CocoaTouch 的核心概念。
    • @Jason 我完全同意 :) 但是在学习跑步之前先学会走路会更容易。 AFAIK 没有教程,但有一些关于它们的食谱docs.xamarin.com/ios/recipes/Content_Controls/Tables
    猜你喜欢
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 2020-04-08
    • 2012-08-14
    • 1970-01-01
    • 2016-01-25
    相关资源
    最近更新 更多