2013-03-18 3 views
1

저는 iPhone 응용 프로그램 개발을 위해 MonoTouch를 사용하고 있습니다. Monotouch를 사용하고 싶습니다. 일부 데이터를 클라이언트에 표시하고 데이터를 변경 한 다음 다시 파일에 저장할 수 있도록하는 대화 상자. (Orginal Sample link)Monotouch.Dialog 요소 값을 파일에 저장합니다.

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 너무 좋은 표현된다

내 코드 자 마린 튜토리얼의 코드 같은 것입니다. 하지만 문제는이 요소의 데이터를 저장하고 다른 클래스의 응용 프로그램에서 사용할 수있는 방법입니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 사용자가 파일을 변경했을 때 파일에 데이터를 저장할 수 있다고 생각합니다. 사용자가 데이터를 변경하면 어떻게 감지 할 수 있습니까?

답변

2

표시된 예에서 Monotouch.Dialog에 대한 간단한 Reflection API를 사용하고 있습니다. 이것은 쉽고 간단하지만 실제로 할 수있는 일이 제한됩니다. Monotouch.Dialog의 여기 (http://docs.xamarin.com/guides/ios/user_interface/monotouch.dialog/elements_api_walkthrough)에서 본 Elements API를 사용하여 테이블의 각 항목을 훨씬 더 많이 제어하고 변경 사항 등을 감지 할 수있는 방법을 배우는 것이 좋습니다.

표 셀 (예 : 이름은 편집 할 수있는 셀)은 텍스트가 변경되는 것과 같은 특정 일이 발생했을 때를위한 액션/이벤트를 가지고 있습니다.

예를 들어 위 화면은 다음을 수행하는 요소 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

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. 
    } 

} 

이 분야는 요소 API를 사용하여 시작하는 고려

관련 문제