1

これをどのように実装すべきかについてのアイデアを探しています:

私はタブバーコントローラーを備えたアプリを持っており、これから各「画面」のナビゲーションコントローラーが来ます(下部のタブバーナビゲーションの独自のタブからアクセスされます)。

各画面は DialogViewController であり、データを入力および表示するためのさまざまな要素と項目があります。1 つの画面で、ユーザーは RadioElements の RadioGroup を使用してアイテムを選択できます。

MyRadioElement _customRadioElement = new MyRadioElement (lines [0], lines [5], setRPMElementData); // set profile name and calculated IOPS for custom disk to this custom element
            // Disk Speed Root Element
            _diskspeed = new RootElement ("Disk Speed: ", new RadioGroup (0)){
                new Section ("Disk Speed:"){
                    new MyRadioElement("5400 RPM","5400",setRPMElementData),
                    new MyRadioElement("7200 RPM","7200",setRPMElementData),
                    new MyRadioElement("10K RPM","10K",setRPMElementData),
                    new MyRadioElement("15K RPM","15K",setRPMElementData),
                    new MyRadioElement("SSD","SSD",setRPMElementData),
                    _customRadioElement // this is the MyRadioElement defined above (our custom disk profile)
                }
            };

最後の要素 (_customRadioElement) は、保存されたディスク オブジェクトから情報を読み込むことによって作成される RadioElement です。テキスト ファイルの行を読み取り、これを使用して RadioElement を作成します。これは元々、Tab Bar Controller の別の Tab を使用して別の画面 (DialogViewController) にアクセスすることによって作成され、ユーザーは「カスタム ディスク」を指定してディスク/ファイルに保存できます。

私の問題は、アプリを使用していて、このカスタム ディスクを変更したい場合、カスタム ディスク編集タブに移動して変更を加えてから、RadioGroup があるメイン タブにフリックして戻りますが、カスタム ディスク RadioElement はRadioGroup リストの末尾は更新されません。(キャプションは更新されませんが、その背後にある実際のデータは更新されます)。戻るボタンを押して RadioGroup から出て、再びそこに戻った後でも。更新する唯一の方法は、アプリを強制終了して再起動することです.DialogViewControllerが作成され、正常に表示されると、カスタムディスクオブジェクトがファイルから再度読み込まれます. ViewWillAppear を使用して必要なテーブル全体を作成しようとしましたが、これの問題は、タブ間をフリックするたびにすべてがリセットされることです。

アプリ内でタブ間をフリックしながら、この RadioGroup とそれに関連付けられている RadioElements を動的に更新するにはどうすればよいですか?

ViewDidAppear を使用してみましたが、これは DialogViewController 自体にあり、RadioGroup には影響しないようです。例えば

public override void ViewWillAppear (bool animated)
    {
        base.ViewWillAppear (animated);

        Console.WriteLine ("Forcing table reload...");
        LoadDiskInfo(); // Reload disk info from local app storage
        this.ReloadData(); // Force refresh of dialog viewcontroller table data - need to refresh the custom disk RadioElement somehow...
    }

どんな助けでも大歓迎です!

4

1 に答える 1

1

この投稿に対する私の回答が参考になるかもしれません: Monotouch Dialog - Reload data list after modified row detail not updated list when return

これがVassilisに役立つことを願っています

于 2013-04-23T09:54:40.157 に答える