1

私の MonoDevelop プロジェクトには、iPhone アプリがあります。私は2つの異なる見解を持っています。各ビューには UITable が含まれています。ビュー 1 では、クラス 1 がデータソース 1 として UITable にフックされています。ビュー 2 では、クラス 2 がデータソース 2 としてフックされています。両方のクラス (データソース) がテーブルにデータを供給します。ビュー 2 にもカスタム セルがあり、これにより非同期に読み込まれます。

linq to XML を使用して 2 つの XML ファイルからデータを取得します。すべてが機能し、データがうまく読み込まれます。私が知る必要があるのは、ビュー 1 で行われた選択に基づいてデータソース 2 にデータをロードすることです。これを行うには、ビュー 1 からクラス (データソース) 2 に ID を渡す必要があります。問題。

知っていることはすべて試しましたが、うまくいきません。

私によると正しい解決策:

2 つのプロパティを持つ SelectedRound という別のクラスを作成しました。コード:

using System;

namespace xxxxx
{
    public class SelectedRound
    {
        public string RoundID { get; set; }
        public string Date { get; set; }
    }
}

クラス 1 で RoundID を設定すると、クラス 1 でアクセスできます。ただし、クラス 2 でアクセスしようとすると、何も返されないか null が返されます。なぜこれが起こるのでしょうか?Class(Datasource) 2 が非同期でロードされているためでしょうか? グローバルな方法で SelectedRound クラスをインスタンス化する必要がありますか? もしそうなら、どのように?おそらくAppDelegate?(私もそうするのに苦労しています)。

単純な文字列変数の設定と取得が難しいことは、私には無意味に思えます。

4

1 に答える 1

1

これは、SelectedRound インスタンスを最初のビューから 2 番目のビューに渡す方法がすべてのように感じます。

非常に迅速で汚れたソリューションとして、シングルトンを使用するか、静的クラスを使用することができます。

public static class SelectedRound
{
    public static string RoundID {get;set;}
    public static string Date {get;set;}
}

より洗練されたパターンについては、非静的クラスの共有インスタンスを渡すために、2 つのビュー コントローラーの一方または両方のコンストラクターをオーバーライドしてみてください。

ビュー コントローラーは、今はなじみのないものに感じるかもしれませんが、ただの C# クラスなので、オーバーライド、新しいメソッド、およびプロパティを記述して自由に拡張してください。

于 2012-05-28T06:52:54.390 に答える