Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.ios Monotouch对话框-修改行详细信息后重新加载数据列表返回时不更新列表_Xamarin.ios_Monotouch.dialog - Fatal编程技术网

Xamarin.ios Monotouch对话框-修改行详细信息后重新加载数据列表返回时不更新列表

Xamarin.ios Monotouch对话框-修改行详细信息后重新加载数据列表返回时不更新列表,xamarin.ios,monotouch.dialog,Xamarin.ios,Monotouch.dialog,单击一个项目时,会打开一个details视图控制器,如果用户单击save(保存),该控制器会进行一些webservice调用以保存数据(这很好)。我遇到的问题是,在保存数据后,当用户单击“上一步”返回列表时,列表项(即,如果名称已更新)不会更新。因此,也许用户更改了名称,因此应该更新前面的列表,我想更新该值,而无需再次调用webservice来重新填充 当视图出现时,我正在调用this.ReloadData(),但这似乎从未更新列表名称。我已经检查了训练,这是一个对象列表,细节控制器已经对其进行

单击一个项目时,会打开一个details视图控制器,如果用户单击save(保存),该控制器会进行一些webservice调用以保存数据(这很好)。我遇到的问题是,在保存数据后,当用户单击“上一步”返回列表时,列表项(即,如果名称已更新)不会更新。因此,也许用户更改了名称,因此应该更新前面的列表,我想更新该值,而无需再次调用webservice来重新填充

当视图出现时,我正在调用
this.ReloadData()
,但这似乎从未更新列表名称。我已经检查了
训练
,这是一个对象列表,细节控制器已经对其进行了修改,但是重新加载数据似乎没有任何作用

如果另一个控制器修改了对象列表,如何刷新数据

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

当您从自定义对象中指定元素的值时,如下所示:

AccountDetailsSection = new Section ("Details"){
            new StringElement ("Code:",  _Account.Code),
            new StringElement ("Name:",  _Account.Name) };
您将获得所需的结果,但元素将丢失指向对象属性的指针。因此,如果稍后更改属性的值,例如:

_Account.Code = "xxx";
重新加载数据没有任何作用。您应该手动更新该值,如下所示:

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

希望这有帮助。

当您从自定义对象中指定元素的值时,如下所示:

AccountDetailsSection = new Section ("Details"){
            new StringElement ("Code:",  _Account.Code),
            new StringElement ("Name:",  _Account.Name) };
您将获得所需的结果,但元素将丢失指向对象属性的指针。因此,如果稍后更改属性的值,例如:

_Account.Code = "xxx";
重新加载数据没有任何作用。您应该手动更新该值,如下所示:

(AccountDetailsSection.Elements [0] as StringElement).Value = "xxx";
this.Root.Reload ( AccountDetailsSection, UITableViewRowAnimation.Fade);
希望这能有所帮助。

谢谢。。我会尝试一下(可能需要一段时间才能回来),不过我希望有一个解决方案,只需重新加载数据集即可。谢谢。。我会尝试一下(可能需要一段时间才能回来),虽然我希望有一个解决方案,只需重新加载数据集即可。。