2010-02-18 56 views
36

我是新iphone development.I要设置在导航的活动的指标bar.I看到下面的导航bar.My代码我的活动指示灯在这里如何在导航栏中设置活动指示器?

-(IBAction) gomethod : (id) sender 
{ 
xxMapSubviewcontroller = [[XxMapSubviewcontroller alloc] init]; 
[self.navigationController pushViewController:xxMapSubviewcontroller animated:YES]; 

activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
activityIndicator.frame = CGRectMake(0.0, 0.0, 20.0, 20.0); 
[activityIndicator startAnimating]; 

[xxMapSubviewcontroller.view addSubview:activityIndicator]; 
} 

如何设置我的活动指示灯导航栏?请帮助我。谢谢。

回答

69

我添加了下面的代码在我想要在导航栏中的活动指示灯的看法。

activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)]; 
    UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator]; 
[self navigationItem].rightBarButtonItem = barButton; 
    [activityIndicator startAnimating]; 
+22

我注意到,在iOS 7上,你需要使用'activityIndi​​cator = [[UIActivityIndi​​catorView alloc] initWithActivityIndi​​catorStyle:UIActivityIndi​​catorViewStyleGray];'或者指标不会出现。 – antf 2014-01-07 19:27:36

12

您正在此处创建一个新的活动指示器视图,这很好,但您并不是指状态栏中的活动指示器。

要显示在状态栏的活动的指标,简单地称之为:

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; 
+5

我想显示在导航栏中 – Warrior 2010-02-18 15:26:38

+0

活动指示灯我需要战士的解决方案,因为我我隐藏了状态栏。当然不是说你的解决方案有什么问题! – 2015-01-31 00:21:41

1

试试。 self.navigationItem.leftBarButtonItem.customView =您的视图

0

我现在试着使用它,而战士提到的代码并不完全按照原样工作。我必须更改activityIndi​​cator的初始化:

activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 

通过此更改,它应该按预期工作。

2

谢谢!我的指标现在正在工作。

我正在与老友分享一个代码示例,把它放在上下文中。

- (无效)viewDidLoad中

// custom button images 
UIImage *customImage = [UIImage imageNamed:@"menu24"]; 
UIImage *customImage2 = [UIImage imageNamed:@"search24"]; 
UIImage *customImage3 = [UIImage imageNamed:@"back24"]; 

// These are linked in my story board to Navigation Item 
[self customiseBarBtnItem:[self menu_button] 
    customImage:customImage selector:@selector(menuPressed:)]; 
[self customiseBarBtnItem:[self search_button] 
    customImage:customImage2 selector:@selector(searchPressed:)]; 
[self customiseBarBtnItem:[self backButton] 
    customImage:customImage3 selector:@selector(backPressed:)]; 

//initialize the activity indicator - as @antf comment suggests for ios7 
UIActivityIndicatorView *actInd=[[UIActivityIndicatorView alloc]          
    initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 

//store it as a property on the view controller 
self.activityIndicator = actInd; 

// this sets up activity indicator  
UIBarButtonItem *progress_indicator = [[UIBarButtonItem alloc] 
    initWithCustomView:[self activityIndicator]]; 

// link custom buttons AND activity indicator in desired order to navigation bar 
self.navigationItem.rightBarButtonItems = 
    [NSArray arrayWithObjects: 
     self.menu_button, 
     self.search_button, 
     progress_indicator, 
     nil]; 

//为了完整 - 这是我如何编程显示/隐藏我的后退按钮

if (bShowBack == YES) 
    self.navItemBar.leftBarButtonItem = self.backButton; 
else 
    self.navItemBar.leftBarButtonItem = Nil; 

//我用我的活动用UIWebView指示器如此触发它如下触发它如下

- (void)webViewDidStartLoad:(UIWebView *)webView 
    {  
    [[self activityIndicator] startAnimating]; 
    } 

    - (void)didFailLoadWithError:(UIWebView *)webView 
      didFailLoadWithError:(NSError *)error 
    {  
    [[self activityIndicator] stopAnimating]; 
    } 

    - (void)webViewDidFinishLoad:(UIWebView *) webView 
    { 
    [[self activityIndicator] stopAnimating]; 
    } 
3

在故事板上:在导航栏上创建BarButtonItem。 添加查看是你的BarButtonItemActivityIndicator的儿子是你的View的儿子。

+0

你能解释一下吗?在此先感谢 – gadget00 2016-08-04 05:07:08

+0

是的,在StoryBoard上:拖动到BarButtonItem的导航栏,现在拖动UIView成为BarButtonItem的子视图,现在将ActivityIndi​​cator拖动到UIView的子视图中。 – evya 2017-12-13 08:17:27

1

在斯威夫特,我做了以下内容:

启用:UIApplication.sharedApplication().networkActivityIndicatorVisible = true

禁用:UIApplication.sharedApplication().networkActivityIndicatorVisible = false

+0

这进入状态栏,虽然 – powerj1984 2015-02-10 15:02:03

+1

你没有错。我误解了OP - 道歉。话虽如此,我遇到这个帖子寻找如何解决在状态栏中显示网络活动指示器问题的答案 - 希望我的答案仍然可以为某人提供一些帮助,如果没有的话。 – djbp 2015-02-11 08:43:26

12

Swift代码:

let activityIndicator = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 20, height: 20)) 
let barButton = UIBarButtonItem(customView: activityIndicator) 
self.navigationItem.setRightBarButtonItem(barButton, animated: true) 
activityIndicator.startAnimating() 
10

这斯威夫特为我工作:

let activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView.init(activityIndicatorStyle: .White) 
let refreshBarButton: UIBarButtonItem = UIBarButtonItem(customView: activityIndicator) 
self.navigationItem.leftBarButtonItem = refreshBarButton 
activityIndicator.startAnimating() 
+0

10.1.1中崩溃:libC++ abi.dylib:以NSException类型的未捕获异常终止 – 2016-11-08 06:29:24

0

例如WhatsApp:

//声明

let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .gray) 

// viewDidLoad中

​​
相关问题