2011-06-27 12 views
3

私はこのコードを自分のプロジェクト全体で使用して、UIBarButtonItemのタイトルを更新します。BarButtonItemのタイトルが更新されない

この特定のクラスでは、ボタンのタイトルとしてカウントを取得するためのNSFetchedResultsControllerがあります。

私はViwDidLoadでこのコードを呼び出していますが、フェッチ前に呼び出されているように見えるため、カウントは常に0です。フェッチデリゲートメソッドの最後に置いてみましたが、それは役に立たなかったどちらか。何か案は?私が代理メソッドをフェッチする際にNSLogでカウントすると正しいです。

self.myBarButton.title = [NSString stringWithFormat: @"%i count", [fetchedResultsController.fetchedObjects count]]; 

のviewDidLoad

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    if (managedObjectContext == nil) 
    { 
     self.managedObjectContext = [(TestAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; 
    } 

    NSSet *filteredFromSession=[selectedSession.property filteredSetUsingPredicate:[NSPredicate predicateWithFormat: @"name == %@",name]]; 
    if ([filteredFromSession count] > 0) 
    { 
     self.exercise = [filteredExercisesFromSession anyObject]; 
    } 
    self.setLabel.title = [NSString stringWithFormat: @"%i sets", [fetchedResultsController.fetchedObjects count]]; 
} 
+0

の代わりにこの

self.setLabel.title = [NSString stringWithFormat: @"%d sets", [self.fetchedResultsController.fetchedObjects count]];

を試してみては 'UIBarButtonItemをsetLabel'ていますか? – EmptyStack

+0

はい、混乱している名前については残念です。 – Jon

+0

残りの 'viewDidLoad'メソッドを追加できますか? –

答えて

1

それはあなたがこれを行うときに、

self.setLabel.title = [NSString stringWithFormat: @"%i sets", [fetchedResultsController.fetchedObjects count]]; 

fetchedResultsControllernilであることが最も可能性の高いです。

あなたがfetchedResultsController用に定義されたgetterメソッドをしましたし、プロパティとして、それを宣言した場合、私はあなたが

NSError * error; 
if (![self.fetchedResultsController performFetch:&error]) { 
    // Error 
} 

は基本的にフェッチが前の設定に完了したことを確認し、上記のあなたの行の前にフェッチん示唆タイトル。これを行うと、今行っている場所からフェッチを削除することができます。

+0

現在、私はNSFetchedResultsControllerを使用していますが、通常のFetechRequestではありません – Jon

+0

ええ、私はフェッチ要求について言及していません。私は 'NSFetchedResultsController'について話しています。 –

+0

しかし、NSFetchedResultsControllerには独自のメソッド '(NSFetchedResultsController *)fetchedResultsController'があります。あなたは代わりにそれをviewDidLoadに移動したいですか? – Jon

1

は、あなたがそれはあなたがタイトルを設定している時にゼロではないことを確認するために「self.myBarButton」をチェックしましたか? (コンセントを正しくセットしなかったなど)

+0

これは機能しません。なぜなら、 'self.myBarButton.title = @" text ";"のような静的テキストを設定すると、それは問題なく動作します。 – Jon

0

どのようにバーのボタンアイテムにアクセスしていますか?このようにアクセスするのはどうですか?

BarButtonItem * item = [self.navigationItem rightBarButtonItem]; 
[itme setTitle:[NSString stringWithFormat: @"%i count", [fetchedResultsController.fetchedObjects count]] 
+0

私はツールバーを使用しています。ナビゲーションバーではありません。私が思う問題は、取得結果がviewDidLoad後まで取得されていないということです。 – Jon

+0

@Jon取り込み後にタイトルを設定しようとしました。 NSNOtificationを使用するか、プロトコルを委譲してタイトルを更新することができます。 –

0

self.setLabel.title = [NSString stringWithFormat: @"%d sets", [fetchedResultsController.fetchedObjects count]]; 
関連する問題