私は2つのビューコントローラを持っています。私は最初に、ボタンを押すと、2番目のビューコントローラがナビゲーションコントローラのスタックにプッシュされます。ここでは、2番目のビューコントローラではテーブルビューがあり、いくつかの行をタップすると(チェックボックスのように)選択され、その行に関連するデータが配列に追加されます。今私が選択を完了したら、私は最初のビューコントローラに戻り、その配列を使用したいと思います。どうやってするか?今私のアプリは次のように動作します。私は委譲プロトコルを持っていて、プロパティ配列を持っているオブジェクトを持っていて、そのオブジェクトと配列全体にアプリケーションからアクセスできます。これは正解/最高/最も単純な方法ですか?ポップされたビューコントローラからデータを渡す
3
A
答えて
6
私はプロパティ配列を持っているオブジェクトを委譲していますが、そのオブジェクトとその配列はアプリケーション全体からアクセスできますが、本当にそれは嫌です。これは正解/最高/最も単純な方法ですか?
ここでは委任が正しいパターンですが、説明する内容はグローバル変数を使用しているのであまり委任されていません。おそらく、あなたはApp Delegateにグローバル変数を格納しています。
ここでは、コードがどのように見えるかの大まかな概要です:
SecondViewController.h:
@protocol SecondViewControllerDelegate;
@interface SecondViewController;
SecondViewController : UIViewController
{
id<SecondViewControllerDelegate> delegate;
NSArray* someArray;
}
@property (nonatomic, assign) id<SecondViewControllerDelegate> delegate;
@property (nonatomic, retain) NSArray* someArray;
@end
@protocol SecondViewControllerDelegate
- (void)secondViewControllerDidFinish:(SecondViewController*)secondViewController;
@end
SecondViewController.m:
@implementation SecondViewController
@synthesize delegate;
@synthesize someArray;
- (void)dealloc
{
[someArray release];
[super dealloc];
}
- (void)someMethodCalledWhenUserIsDone
{
[delegate secondViewControllerDidFinish:self];
}
FirstViewController.h:
#import SecondViewController
@interface FirstViewController : UIViewController <SecondViewControllerDelegate>
{
...
}
@end
は、
FirstViewController.m:私は=自己secondViewController.delegateを設定する必要がありました
@implementation FirstViewController
- (void)secondViewControllerDidFinish:(SecondViewController*)secondViewController
{
NSArray* someArray = secondViewController.someArray
// Do something with the array
}
@end
0
あなたはsecondViewController
のreference
を必要とし、そのオブジェクトを作成します。
secondViewController *object2 = [[SecondViewController alloc] init];
object2.thatArray
は、アレイの内容を有する。そのビューコントローラを離れるときに配列がその値を保持することを確認します(または、すべてのviewControllerによってアクセスできるように配列をAppDelegate
に作成できます)。
関連する問題
- 1. ビューコントローラをスタックからポップする方法
- 2. 目的C - 補完ブロックとビューコントローラがスタックからポップされる
- 3. テーブルビューコントローラからビューコントローラへデータを渡す
- 4. テーブルビューからビューコントローラにデータを渡す
- 5. ビューコントローラから別のビューコントローラにデータを渡す
- 6. データがプッシュされたときにビューコントローラに渡されない
- 7. ビューコントローラをポップした後に表示されるタブバー
- 8. ビューコントローラからデリゲート付きビューコントローラへのデータの受け渡し
- 9. ビューコントローラのプッシュとポップ - アニメーション
- 10. モーダル表示されたビューコントローラから反転されたビューコントローラを外す
- 11. 1つのビューコントローラから別のビューコントローラにデータを渡す。 iOS <= 4対iOS 5
- 12. 子から親ビューコントローラへデータを渡す方法は?すぐに
- 13. カスタムUIセルからビューコントローラにデータを渡す
- 14. viewcontroller tableviewから別のビューコントローラにデータを渡す
- 15. テーブルビューコントローラからタブビュー内の別のビューコントローラにデータを渡す?
- 16. 1つのビューコントローラから別のコントローラにデータを渡す
- 17. ビューコントローラがナビゲーションスタックからポップされているかどうかを調べる方法はありますか?
- 18. 返されたデータをPHPスクリプトからHighchartsデータ[]ブロックに渡す?
- 19. デリゲートを介して別のビューコントローラから渡されたデータを使用してUITableViewに行を挿入
- 20. ナビゲーションコントローラの別のビューコントローラにデータを渡す
- 21. Swift 3ビューコントローラ間でデータを渡す
- 22. ビューコントローラからタブバーコントローラへのデータの受け渡し
- 23. ブロックからビューコントローラへのデータの受け渡し
- 24. データが2番目のビューコントローラにテーブルビューから渡されないのはなぜですか?
- 25. ナビゲーションコントローラからプッシュされたビューコントローラが表示されません
- 26. Firebaseが配置されたアレイからUITableViewCellデータを渡す
- 27. バックエンドから渡されたデータを表すAngularJS Flaskバックエンド
- 28. Shopify URLから保存された注文にデータを渡す
- 29. Vueインスタンスからネストされたコンポーネントにデータを渡すには
- 30. 更新されたデータをグリッドからコントローラに渡す方法
おかげで...しかし、それは動作しませんので、おそらく私は、何か間違ったことをやっている:( – Michael
。私はそれをプッシュする前に...今それは動作:)感謝再び – Michael