如何在导航栏中添加活动指示器?

时间:2010-08-25 11:04:30

标签: iphone objective-c

我在我的应用中使用了活动指示器视图。

当我点击一个按钮时,我希望活动指示器在导航栏中显示10秒然后自动隐藏。

我在视图中使用以下代码加载:

CGRect frame = CGRectMake(0.0, 0.0, 25.0, 25.0);

self.activity = [[UIActivityIndicatorView alloc]
             initWithFrame:frame];

[self.activity sizeToFit];

self.activity.autoresizingMask =
    (UIViewAutoresizingFlexibleLeftMargin |
     UIViewAutoresizingFlexibleRightMargin |
     UIViewAutoresizingFlexibleTopMargin |
     UIViewAutoresizingFlexibleBottomMargin);

UIBarButtonItem *loadingView = [[UIBarButtonItem alloc] initWithCustomView:self.activity];
loadingView.target = self;
self.navigationItem.rightBarButtonItem = loadingView;   

在按钮操作中,我只启动指示器:

[self.activity startanimating];

但我看不到导航栏中的指示。

请告诉我我的代码是否有问题......

2 个答案:

答案 0 :(得分:5)

UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
UIBarButtonItem *itemIndicator = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator];
[self.navigationItem setLeftBarButtonItem:itemIndicator];
[activityIndicator startAnimating];

答案 1 :(得分:0)

我不明白你为什么要使用目标(你甚至没有指定一个动作)...无论如何我只是测试了你的代码并引入了这个微小的调整。每次我想要启动活动指示器时,我都会使用这段代码:

UIActivityIndicatorView *test = (UIActivityIndicatorView*)self.navigationItem.rightBarButtonItem.customView;

[test startAnimating];

显然我不使用ivar,因为它不需要。它只是一个演员而且来自你的UIViewController,你可以非常快速地获得它。

希望它有所帮助。