BarButtonItem的标题未更新

时间:2011-06-27 06:56:52

标签: iphone objective-c

我在整个项目中使用此代码来更新我的UIBarButtonItem的标题。

在这个特定的类中,我有一个NSFetchedResultsController,我想把它设置为按钮的标题。

我在ViwDidLoad中调用此代码,但似乎它在获取之前被调用,因此计数始终为0.我尝试将它放在Fetch委托方法的末尾,但那并没有帮助。有任何想法吗?当我在fetch委托方法中对NS计数时,它是正确的。

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]];
}

4 个答案:

答案 0 :(得分:1)

您是否检查过“self.myBarButton”以确保在设置标题时它不是零? (就像你忘了正确设置插座等)?

答案 1 :(得分:1)

当你这样做时,最有可能是

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

fetchedResultsControllernil

如果您为fetchedResultsController定义了一个getter方法并将其声明为属性,我建议您在上一行之前进行提取,

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

基本上确保在设置标题之前完成提取。执行此操作后,您可能希望从当前正在执行的位置删除提取。

答案 2 :(得分:0)

您如何访问栏按钮项?如何访问这样的。

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

答案 3 :(得分:0)

试试这个

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

取代

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