Come impostare l'indicatore di attività nella barra di navigazione?
-
21-09-2019 - |
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.
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
- Connet
UIBarButtonItem
dastoryboard
ayourViewController
- rimuovere
week
dalla sua definizione come:@IBOutlet var btNavigaitonRight: UIBarButtonItem!
-
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.