4

これに関する簡単な例を丸一日探しましたが、まだ見つかりません。私はアプリに取り組んでおり、初期ロードで API 呼び出しを行い、任意のタブ ビューでアクセスできるいくつかの変数を入力したいと考えています。

例: 単一の API 呼び出しを行って、アラート タブのアラートに関連するデータを含むデータを取得したいと考えています。このデータを初期ロードで使用して、[アラート] タブのバッジを更新したいと考えています。ただし、同じ情報を再度取得するために別の API 呼び出しを行うことなく、ユーザーがそのタブに移動したら、アラート ページでもその情報を使用したいと考えています。

私の要件に合わない説明をたくさん読んだので、私を助ける良い例を探しています。

4

5 に答える 5

15

UITabBarViewControllerのプロパティを使用viewControllersして、タブ バー コントローラーのビュー コントローラーの配列にアクセスします。タブバーコントローラーのアーキテクチャに従って、それらを型キャストします。次に、その配列を使用していずれかのビュー コントローラーへのポインターを取得します。

たとえば、タブ バー コントローラーに 5 つのタブがあり、各タブUINavigationControllerには特定UIViewControllerのルート ビュー コントローラーがあるとします。3 番目のタブのバッジ値を Web 応答配列カウントに設定するとします。あなたはそれを行うことができます

[[[self.tabviewController viewControllers] objectAtIndex:2] 
        setBadgeValue:[NSString stringWithFormat:@"%d",[myArray count]];

ビュー コントローラーを型キャストすることで、特定のビュー コントローラーのプロパティにアクセスすることもできます。例えば

MyViewController *myVc = (MyViewController*) [[(UINavigationController*)[[self.tabviewController viewControllers] objectAtIndex:2] viewControllers] objectAtIndex:0];
[myVc setPropertyName:propertyValue];
于 2013-06-08T07:16:05.423 に答える
2

昨日からこの質問を入力してもらい、投稿する前に必ず検索しました。私が見つけたのと同じような質問はありませんでした。それは非常に簡単かもしれませんし、おそらくこれはそれを行う方法ではないかもしれませんが、この問題を解決する方法は次のとおりです: NSUserDefaultsとこのページのコード例を使用して

于 2013-06-08T07:07:56.837 に答える
1

アプリのデリゲート オブジェクトにデータを配置します。アプリ内のどこからでもアクセスできます(MyAppDelegate *)[[UIApplication sharedApplication] delegate]

NSUserDefaults は、アプリ内でグローバルにデータを共有することを意図したものではありませんが、仕事は完了します。また、アプリが次回サーバーに接続できない場合でも、情報が保持されるという利点があります。それは良いことですか、それとも悪いことですか?

于 2013-06-08T14:31:52.910 に答える
1

これらすべての変数を 1 つのクラスに配置し、いつでもその共有インスタンスにアクセスできます。追加

+ (YourClass *)sharedObject
{
    static YourClass *sharedClassObject = nil;
    if (sharedClassObject == nil) {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            sharedClassObject = [[YourClass alloc] init];
            //Initialise it here if necessary
        });
    }

    return sharedClassObject;
}

共有インスタンスにアクセスするには、単に[YourClass sharedObject].

于 2013-06-08T07:45:40.920 に答える