私は、サーバからの応答がresponseDictionaryとして来るクラスを持っています。このresponseDictionaryを別のVCで使いたいが、代理人を介して辞書を送ることはできません。これをどのように達成できるかを客観的なコードで記述してください。カスタム代理人を介してVCから別のVCに辞書を送信する
答えて
サンプルプロジェクト、それは単にデモ用で、uがそれは
まず、我々はWebService
それがデータを要求するクラス名を作成します参照することができ、その応答として、それは辞書を取得し、また、それが定義されてそのデータを通知するデリゲートを受信してWebService.m
WebService.h
#import <Foundation/Foundation.h>
@protocol WebServiceDelegate;
@interface WebService : NSObject
{
}
@property(nonatomic, assign) id<WebServiceDelegate>webServiceDelegate;
- (void)webserviceRequestData; //initiates the data request
@end
@protocol WebServiceDelegate <NSObject>
- (void)webService:(WebService *)aWebService didReceievResponseData:(NSDictionary *)dataDictionary;
@end
に(あなたのケースで)VCに送信されます
#import "WebService.h"
@implementation WebService
- (instancetype)init
{
self = [super init];
if(self)
{
}
return self;
}
- (void)webserviceRequestData
{
sleep(5); //for demo
[self makeWebserviceToGetSomeData];
}
- (void)makeWebserviceToGetSomeData
{
NSDictionary *data = [NSDictionary dictionaryWithObjectsAndKeys:@"Data_1",@"Key_1",@"Data_2",@"Key_2",@"Data_3",@"Key_3", nil];
[self receievedSomeData:data];
}
//finally data is received as dictionary and send it to VC
- (void)receievedSomeData:(NSDictionary *)dataDictionary
{
if([self.webServiceDelegate respondsToSelector:@selector(webService:didReceievResponseData:)])
[self.webServiceDelegate webService:self didReceievResponseData:dataDictionary];
}
@end
とビューコントローラクラスのはViewController.h
#import <UIKit/UIKit.h>
#import "WebService.h"
@interface ViewController : UIViewController<WebServiceDelegate>
@property(nonatomic, strong) WebService *myWebService;
@end
とViewController.m
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_myWebService = [[WebService alloc] init];
_myWebService.webServiceDelegate = self; //this is call back to this class
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[_myWebService webserviceRequestData];
}
- (void)webService:(WebService *)aWebService didReceievResponseData:(NSDictionary *)dataDictionary
{
NSLog(@"web data:%@",dataDictionary.description);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
5秒後には、我々はメソッド呼び出すために作られ、それが他の方法receievedSomeData:
メソッドを呼び出しを送信しますこれで、気象の呼び出し元がメソッドを実装しているかどうかを確認しています(オブジェクトに送信された認識できないセレクタ)を回避するかどうかをチェックしています。データ(ディクショナリ)をv IEWコントローラ
ともuは任意のクラス(どんなのViewController)からWebサービスを呼び出すと、デリゲート
こんにちは!私はそれを試してみました...ちょっと疑問を持っています - (void)webService :(WebService *)aWebService didReceievResponseData:(NSDictionary *)dataDictionaryのボタンクリック – FreshStar
ボタンがViewControllerにあり、これが欲しいこのボタンのクリックで動作する関数 – FreshStar
' - (void)webService:(WebService *)aWebService didReceievResponseData:(NSDictionary *)dataDictionary'は、データを受け取るためにWebサービスから呼び出されます。そのデータを次のビューコントローラに送信したい場合は、別のデリゲートまたは通知を使用するか、初期化中にその辞書を第2のビューコントローラに割り当てることができます –
- 1. 私はprepareForSegueを使って1つのVCから別のVCに代理人を渡します
- 2. 1つのVcから別のVcにアドレスを渡す
- 3. Swift:別のVCからVCフレームをプログラマチックに設定しました
- 4. VCから別のVCにデータを渡すことができません
- 5. 画像をObjective VCからSwiftに設定しましたVC
- 6. カスタム代理人
- 7. はVC#にVC++からulong64配列を渡すとメモリ
- 8. vcでskypeグループの会話にメッセージを送信する#
- 9. VC別のVCの値を設定する際にエラーが発生する
- 10. 現在のVCより下のVCをログアウトしてクリアする
- 11. VC++は2つのアプリケーション間でメッセージを送信します
- 12. 別のVCからJSQCollectionViewにメッセージを追加する:Swift
- 13. 関数を介して代理人を返しますか?
- 14. コンテナVCを扱う際に代理プロトコルが機能しないのですか?
- 15. アレイを別のVC(スウィフト)に渡す
- 16. 複数のIBOutletsを別のVCに
- 17. CollectionView代理人から別のViewControllerにデータを渡します。
- 18. UIViewControllers's.viewを保持してからVCを解放すると、VCはdeallocしますか?
- 19. vC++ 2008を使用してusbポートに通信する
- 20. VCからApp Delegateにオブジェクトを渡す
- 21. VC#
- 22. オープンクラスの別のVCから関数を呼び出す - Swift
- 23. 代理人を別の代理人に変換します。擬似キャスト
- 24. VC++ 2008プロジェクトでVC++ 2010ランタイムライブラリを使用
- 25. 別のビューに代理人PickerViewの代理人
- 26. vC++のグループボックスコントロールのカスタムまたはサブクラス
- 27. カスタム代理人alwayse nil
- 28. VC++で電子メールを送信するプログラムを作成するには?
- 29. VC++ 2010プロジェクトをVC++ 2008にダウングレードする方法は?
- 30. 適切な戻るボタン(Contacts.appスタイル)を使用して、モーダルコントローラからマスターVCの詳細VCに
としてそれを設定することができますVC遷移にVCのためのseguesを使用していますか? –