2010-02-18 8 views
36

: Ich bin zu iphone development.I wollen eine Aktivitätsanzeige in der Navigation setzen bar.I meine Aktivitätsanzeige unterhalb der Navigations bar.My Code sehen hierWie stelle ich den Aktivitätsindikator in der Navigationsleiste ein?

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

ist Wie kann ich meine Tätigkeit Kennzeichen in die Navigationsleiste? Bitte hilf mir. Danke.

Antwort

69

ich fügen Sie das unten Stück Code in der Ansicht, in der ich die Aktivitätsanzeige in der Navigationsleiste wollte.

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

Ich habe festgestellt, dass Sie auf iOS 7 verwenden müssen activityIndicator = [[UIActivityIndicatorView Alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleGray]; 'oder der Indikator wird nicht angezeigt. – antf

12

Sie erstellen hier eine neue Aktivitätsindikatoransicht. Das ist in Ordnung, aber Sie beziehen sich nicht auf den Aktivitätsindikator in der Statusleiste.

die Aktivitätsanzeige in der Statusleiste anzuzeigen, diese rufen Sie einfach an:

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

Ich möchte in der Navigationsleiste, um die Aktivitätsanzeige angezeigt werden – Warrior

+0

I Krieger-Lösung benötigt, weil ich Ich verstecke die Statusleiste. Nicht dass mit Ihrer Lösung natürlich etwas nicht stimmt! –

1

versuchen. self.navigationItem.leftBarButtonItem.customView = Ihre Ansicht

0

Ich habe versucht, es jetzt zu verwenden und der von Krieger erwähnte Code funktionierte nicht genau so wie es ist. Ich musste die Initialisierung des activityIndicator ändern:

Mit dieser Änderung sollte es wie erwartet funktionieren.

2

Danke! Mein Indikator funktioniert jetzt.

Ich teile ein Codebeispiel für Kollegen noobs, um dies in Zusammenhang zu setzen.

- (void) viewDidLoad Vollständigkeit

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

// Für - das ist, wie ich meine Back-Button programmatisch

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

// ich meine Tätigkeit ein-/auszublenden Indikator mit einem UIWebView so triggern es wie folgt

- (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

Auf Storyboard: Erstellen Sie BarButtonItem in der Navigationsleiste. Add View to Sohn von Ihrem BarButtonItem und ActivityIndicator zu Sohn Ihres View sein.

+0

könnten Sie das mehr erklären? Vielen Dank im Voraus – gadget00

+0

Ja, auf StoryBoard: Ziehen Sie in die Navigationsleiste das BarButtonItem, ziehen Sie nun die UIView in die Unteransicht von BarButtonItem, ziehen Sie nun den ActivityIndicator in die Unteransicht der UIView. – evya

1

In Swift, ich habe folgendes:

Enable:UIApplication.sharedApplication().networkActivityIndicatorVisible = true

Disable:UIApplication.sharedApplication().networkActivityIndicatorVisible = false

+0

Dies geht in die Statusleiste obwohl – powerj1984

+1

Sie nicht falsch liegen. Ich habe die OP - Entschuldigungen falsch gelesen. Nachdem ich das gesagt habe, bin ich auf diesen Beitrag gestoßen, auf der Suche nach einer Antwort, wie das Problem gelöst werden kann, den Netzwerkaktivitätsindikator in der Statusleiste zu zeigen - hoffentlich wird meine Antwort noch jemandem helfen, wenn nicht zum OP. – djbp

12

Swift Code:

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

Dieser arbeitete für mich in Swift :

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

Dies stürzt in 10.1.1 ab mit: libC++ abi.dylib: Beenden mit nicht abgefangener Ausnahme vom Typ NSException –

0

wie WhatsApp:

// Deklarieren

let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .gray) 

// ViewDidLoad

self.activityIndicator.hidesWhenStopped = true 

func showIndicator() { 
    self.navigationItem.titleView = self.activityIndicator 
    self.activityIndicator.isHidden = false 
} 

func hideIndicator() { 
    self.navigationItem.titleView = nil 
} 
Verwandte Themen