xCodeを使用しています。4.2.1 - Webサービスを使用するアプリケーションがあり、カスタムクラスとNSURLConnectionを使用してデータを取得します。ユーザーは、プロジェクト内のいくつかのカスタムクラスで発生する一連のイベントを開始する「更新」ボタンをタップし、MainViewControllerのメソッドで返すプロパティと一緒にオブジェクトを取得できます。 IBOutletのテキストを返されたオブジェクトのプロパティ(NSString)に変更できません。IBOutletのテキストをカスタムクラスから返されたオブジェクトのプロパティに変更します。
IBOutlet UILabel *textLabel;
と::
@property (nonatomic, retain) IBOutlet UILabel *textLabel;
そして、私が合成されてきた私の「MainViewController.h、私はIBOutletを持っている(そしてそれはMainViewController.xibでボタンに配線されます)で
MainViewController.mのラベル
@synthesize textLabel;
このプロセスは次のようになります。リフレッシュボタンタップ - >消火MainViewControllerでのsa mthod - >カスタムクラス内の別の方法を発射(オブジェクトを作成し、ウェブからデータを取得する) - > MainViewControllerにオブジェクトを送信経由:(私のカスタムクラスの実装で)
// parsing, etc.. and define a string for priceString property of mp object
MainViewController *mvc = [[MainViewController alloc] init];
[mvc log:mp];
そして、私のMainViewControllerで私はそのオブジェクトのプロパティにアクセスし、このメソッドからちょうど良いNSLogで印刷できます。
- (void) log:(Price *)mp {
self.textLabel.text = mp.priceString;
NSLog(@"%@", mp.priceString);
}
この時点で、ログにデータが表示されますが、textLabelのテキストは変更されません。
私は1週間サンプルを読んでいましたが、代表からNSNoticationの回答まですべて聞いたことがありますが、何も動作していないようです。
私が行う必要があるのは、 - (void)メソッドからIBOutletを生成することだけです。 ご協力いただければ幸いです。私は委任を実装するためにダウンしていますが、私は非常に新しいので、例を探しています。
EDIT - 詳細。
私のオブジェクトを返すNSURLConnectionは別のクラスにあり、viewDidLoadで接続を開始するスレッドをたくさん読んでいることに注意してください。
が表示されます
? UILabelまたはUIButtonに? –
textLabelというアウトレットはUILabelに配線されています。プロセス全体を開始するIBActionは、ナビゲーションバーのボタンに配線されています。問題はそれが外に出て、必要なすべてのデータを取得した後です。 viewDidLoadメソッドの以外のUI(NIB)ラベルを更新するにはどうすればよいですか?つまり、返されたデータはメインスレッドの外側に戻ります。 – jhilgert00
このメソッドをviewDidLoad内から呼び出して、値が返されるまでメインスレッドを遅延させることはできますか? - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone :(BOOL)wait – jhilgert00