0

私は iOS を初めて使用します。最近、問題が発生しています。ビュー A とビュー B があります。ビュー A にはナビゲーション コントローラーがあります。ビューAにはBに切り替えるボタンがあります.Bが新しいオブジェクトを作成するたびにこのボタンをクリックすると. このオブジェクトを追跡して、この 2 つのビュー間でデータを共有するにはどうすればよいですか? ありがとう

4

2 に答える 2

2

これを行うにはいくつかの方法があります。

プッシュする前に A が設定する B のプロパティを持つことができます。(NSDictionary、Array、String など) これは最善の方法ではありませんが、機能します。

UIViewController *viewB = [[UIViewController alloc]init];
[viewB setMyProperty:@"some data!"];
[self.navigationController pushViewController:viewB animated:YES];

NSNotificationCenter を使用して、オブジェクトを次のビューに渡すこともできます。

NSDictionary *dictionary = [NSDictionary dictionaryWithObject:
                         [NSNumber numberWithInt:index]
                      forKey:@"index"];

[[NSNotificationCenter defaultCenter] postNotificationName:@"myNotification"
                                      object:self
                                      userInfo:dictionary];

私が通常これを処理する方法は、AppDelegate で初期化された関連付けられたプロトコルを使用してデータを保持するオブジェクトをセットアップしてオブジェクトにすることです。次に、何かを読み書きする必要があるビューは、そのオブジェクトへのポインターを取得して実行します。

@class AppData;

@protocol AppDataProtocol

- (AppData*)theAppData;

@end 

ビューでは、これでポインターをつかむことができます。

-(AppData*)theAppData {

    id<AppDataProtocol> theDelegate = (id<AppDataProtocol>)[UIApplication sharedApplication].delegate;
    AppData* theData = (AppData*)theDelegate.theAppData;

    return theData;
}

この。

 appData = [self theAppData];

その後、appData の任意のプロパティに簡単にアクセスできます。

于 2013-05-09T15:58:30.870 に答える
0
-(void)fnButtonA{

ViewB *vcB = [[ViewB alloc] initWithData:DataToB];
[[self navigationController] pushViewController:vcB animated:Yes];

}


In ViewB.m edit the init function to 

-(UIViewController *)initWithData:(NSMutableDictionary*)data
于 2013-05-09T15:44:02.537 に答える