Domanda

Sono nuovo di sviluppo di iPhone. Voglio impostare un indicatore di attività nella barra di navigazione. Vedo il mio indicatore di attività sotto la barra di navigazione. Il mio codice è qui

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

Come posso impostare il mio indicatore di attività nella barra di navigazione? Per favore aiutatemi. Grazie.

È stato utile?

Soluzione

aggiungo il pezzo di sotto del codice nella vista in cui ho voluto l'indicatore di attività nella barra di navigazione.

activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator];
[self navigationItem].rightBarButtonItem = barButton;
[activityIndicator startAnimating];

Altri suggerimenti

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

Si sta creando una nuova visualizzazione indicatore di attività qui, che va bene, ma non si riferisce alla indicatore di attività nella barra di stato.

Per visualizzare l'indicatore di attività nella barra di stato, è sufficiente chiamare questo:

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];

Questo ha funzionato per me in Swift:

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

On storyboard: Crea BarButtonItem alla barra di navigazione. Aggiungi vista di essere figlio di tuo BarButtonItem e ActivityIndicator di essere figlio della tua View.

Come WhatsApp:

// Dichiara

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
}

Grazie! Il mio indicatore è ora di lavoro.

sto condividendo un esempio di codice per i compagni di niubbi, per mettere in questo contesto.

- (void) 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];

// Per completezza - è così che a livello di codice mostrare / nascondere il mio tasto posteriore

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

// Io uso il mio indicatore di attività con un UIWebView modo innescare come segue

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

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

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

In Swift, ho fatto la seguente:

Attiva UIApplication.sharedApplication().networkActivityIndicatorVisible = true

Disattiva: UIApplication.sharedApplication().networkActivityIndicatorVisible = false

Swift

  1. Connet UIBarButtonItem da storyboard a yourViewController
  2. rimuovere week dalla sua definizione come: @IBOutlet var btNavigaitonRight: UIBarButtonItem!
  3. Utilizzare questi metodi per l'avvio e l'arresto indicatore di attività:

    var activityIndicator = UIActivityIndicatorView()
    
    func startBarButtonIndicator() {
        activityIndicator = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
        activityIndicator?.color = .gray
        let barButton = UIBarButtonItem(customView: activityIndicator!)
        self.navigationItem.setRightBarButton(barButton, animated: true)
        activityIndicator?.startAnimating()
    }
    
    func stopBarButtonIndicator() {
        activityIndicator?.stopAnimating()
        navigationItem.setRightBarButton(btNavigaitonRight, animated: true)
    }
    

ho avuto una domanda simile con la risposta qui: - cambiare programmaticamente navigazione pulsante della barra di indicatore di attività

ho voluto cambiare il pulsante di aggiornamento nella barra di navigazione per l'indicatore di attività e viceversa.

provare questo: self.navigationItem.leftBarButtonItem.customView = your_view

Ho cercato di usare ora e il codice di cui da guerriero non ha funzionato esattamente come è. Ho dovuto cambiare l'inizializzazione di activityIndicator:

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

Con questa modifica dovrebbe funzionare come previsto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top