2012-12-12 1 views
1

항목을 클릭하면 사용자가 저장을 클릭하면 데이터를 저장하기위한 웹 서비스 호출이 이루어지는 상세보기 컨트롤러가 열립니다. . 내가 가진 문제는 사용자가 다시 클릭하여 목록으로 돌아갈 때 데이터를 저장 한 후 목록 항목 (예 : 이름이 업데이트 된 경우)이 업데이트되지 않은 경우입니다. 따라서 사용자가 이름을 변경하면 이전 목록을 업데이트해야하므로 다른 webservice를 호출하여 다시 채우지 않아도 값을 업데이트하고 싶습니다.Monotouch Dialog - 반환 할 때 행 정보를 수정하지 않고 행 목록을 수정 한 후 데이터 목록을 다시로드하십시오.

보기가 나타나면 this.ReloadData()을 호출하려고하지만 결코 목록 이름을 업데이트하는 것처럼 보이지 않습니다. 개체 목록 인 workouts을 확인했는데 세부 컨트롤러가 수정했지만 리로드 데이터는 아무 것도하지 않는 것 같습니다.

다른 컨트롤러가 개체 목록을 수정 한 경우 데이터를 새로 고치는 방법은 무엇입니까?

AccountDetailsSection = new Section ("Details"){ 
      new StringElement ("Code:", _Account.Code), 
      new StringElement ("Name:", _Account.Name) }; 

당신이 원하는 결과를 얻을 수 있지만 요소는 객체의 속성에 다시 포인터를 잃는다 :

public override void ViewWillAppear (bool animated) 
    { 
     InvokeOnMainThread (delegate {      
      this.ReloadData(); 
     }); // call reload on main thread 

        base.ViewWillAppear (animated); 
    } 

    public override void ViewDidLoad() 
    { 
     base.ViewDidLoad(); 

     workouts = manager.GetWorkouts(Helpers.User.Auth); 
     var sections = new Section(); 
     var root = new RootElement("Workouts"){sections}; 
     foreach (var wo in workouts) { 
      var tempwo = wo; 
      var wodetail = new RootElement(wo.Name, delegate { 
       var W = new WorkoutViewModel(tempwo); 
       var p = new WorkoutDetailController(W, tempwo); 
       return p; 
      }); 
      sections.Add (wodetail);    
     } 

     Root = root; 
    } 

답변

1

당신과 같이 사용자 지정 개체에서 요소의 값을 할당 할 때 보인다 . 예를 들어 나중에 속성 값을 변경하는 경우 :

_Account.Code = "xxx"; 

데이터를 다시로드해도 아무런 변화가 없습니다. 다음과 같이 수동으로 값을 업데이트해야합니다.

(AccountDetailsSection.Elements [0] as StringElement).Value = "xxx"; 
this.Root.Reload (AccountDetailsSection, UITableViewRowAnimation.Fade); 

호프가 도와줍니다.

+0

감사합니다. 데이터 세트를 다시로드하면 해결할 수있는 솔루션이 있기를 기대했지만 시도해 보겠습니다. – lucuma

관련 문제