2011-12-22 5 views
-2

Xcode 4.2.1で標準のページベースアプリケーションを作成しました。ページベースアプリケーションの変更

は私がModelController.m

を変更する必要があることがある方法 - 各ページの

- (DataViewController *)viewControllerAtIndex:(NSUInteger)index storyboard:(UIStoryboard *)storyboard; 

この方法は、作成した新しいDataViewController

私はすべてのページのために一つだけ DataViewControllerのインスタンスを使用したい
DataViewController *dataViewController = [storyboard instantiateViewControllerWithIdentifier:@"DataViewController"]; 

このアプリケーションではこのようにメソッドviewControllerAtIndexを変更するには:

if (dataViewController == NULL) { 
    dataViewController = [storyboard instantiateViewControllerWithIdentifier:@"DataViewController"]; 
} 

dataViewController.dataObject = [self.pageData objectAtIndex:index]; 

しかし、これは正しく動作しません。

ありがとうございます。

+2

"これは正しく動作しません"誰にも有用ではありません。どうしたの? – jrturton

答えて

0

私は人々が「どのように」動作しないのかについての詳細が必要だと思います。 DataViewControllerのインスタンスが複数作成されている場合は、ブロックを@synchronizedブロックに入れてみましたか?暗闇での撮影の種類は、それは私が最初にしようとしているものです。

+0

「方法」をよく説明できません。しかし、もし私がブロックを@synchronizedブロックに入れるのに役立つのは何ですか?ありがとう – isak

+0

これは、同時にブロックにアクセスする複数のスレッドを避けるのに役立ちます。その場合、[storyboard instantiate ...]が複数回呼び出される可能性があります。複数のスレッドがこのコードにアクセスする状況を描写するのは難しいですが、コード全体がわからないので、試してみる価値があると思いました。 – barley

+0

あなたは私のバグだと思いますか?いいえ、Appleのテンプレートであり、通常はページごとに新しいインスタンスを作成します。コメントのModelController.mの頭には、「各ページのビューコントローラを実際に作成する必要はあまりありません。本当に不要なオーバーヘッドが発生します。 – isak

関連する問題