1

我正在使用 MonoTouch 开发我的 iPhone 应用程序。我想使用单触。用于向客户端显示一些数据并让他们更改数据然后再次将它们保存到文件的对话框。

我的代码类似于 Xamarin 教程的代码:(原始 示例链接)

public enum Category
{
    Travel,
    Lodging,
    Books
}

public class ExpesObject{
    public string name;
}

public class Expense
{
    [Section("Expense Entry")]

    [Entry("Enter expense name")]
    public string Name;
    [Section("Expense Details")]

    [Caption("Description")]
    [Entry]
    public string Details;
    [Checkbox]
    public bool IsApproved = true;
    [Caption("Category")]
    public Category ExpenseCategory;
}

它代表了TableView如此美好。但问题是,我们如何保存这些元素的数据并在其他类应用程序中使用它们?这样做的最佳方法是什么?我猜我们可以在用户更改数据时将数据保存到文件中。但是我们如何检测用户何时更改数据呢?

4

1 回答 1

2

在您展示的示例中,您使用的是 Monotouch.Dialog 的简单反射 API。虽然这很好也很容易,但它确实限制了你可以做的事情。我建议学习使用 Monotouch.Dialog 的 Elements API ( http://docs.xamarin.com/guides/ios/user_interface/monotouch.dialog/elements_api_walkthrough ),它可以让您更好地控制每个项目表,并能够检测到变化等。

每个表格单元格(例如,名称是一个单元格,您可以对其进行编辑)在某些事情发生时具有操作/事件,例如更改文本。

例如,可以使用执行以下操作的元素 API 制作上面的屏幕。

public class ExpenseViewController : DialogViewController
{
    EntryElement nameEntry;

    public ExpenseViewController() : base(null, true)
    {
        Root = CreateRootElement();

        // Here is where you can handle text changing
        nameEntry.Changed += (sender, e) => {
            SaveEntryData(); // Make your own method of saving info.
        };
    }

    void CreateRootElement(){
         return new RootElement("Expense Form"){
             new Section("Expense Entry"){
                 (nameEntry = new EntryElement("Name", "Enter expense name", "", false))
             },
             new Section("Expense Details"){
                 new EntryElement("Description", "", "", false),
                 new BooleanElement("Approved", false, ""),
                 new RootElement("Category", new Group("Categories")){
                     new CheckboxElement("Travel", true, "Categories"),
                     new CheckboxElement("Personal", false, "Categories"),
                     new CheckboxElement("Other", false, "Categories")
                 }
             }
         };
    }

    void SaveEntryData(){
        // Implement some method for saving data. e.g. to file, or to a SQLite database.
    }

}

考虑这些领域以开始使用 Elements API: 来源:https ://github.com/migueldeicaza/MonoTouch.Dialog

MT.D 介绍:http ://docs.xamarin.com/guides/ios/user_interface/monotouch.dialog

MT.D 元素演练:http ://docs.xamarin.com/guides/ios/user_interface/monotouch.dialog/elements_api_walkthrough

于 2013-03-18T18:00:51.170 回答