iphone - simbolo - ¿Cómo establecer el indicador de actividad en la barra de navegación?
porque aparece un circulo dando vueltas en mi iphone 6 (12)
¡Gracias! Mi indicador está funcionando ahora.
Estoy compartiendo un ejemplo de código para noobs compañeros, para poner esto en contexto.
- (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];
// Para compleción: así es como programáticamente muestro / escondo mi botón de retroceso
if ( bShowBack == YES )
self.navItemBar.leftBarButtonItem = self.backButton;
else
self.navItemBar.leftBarButtonItem = Nil;
// Utilizo mi indicador de actividad con un UIWebView así que accionalo de la siguiente manera
- (void)webViewDidStartLoad:(UIWebView *)webView
{
[[self activityIndicator] startAnimating];
}
- (void)didFailLoadWithError:(UIWebView *)webView
didFailLoadWithError:(NSError *)error
{
[[self activityIndicator] stopAnimating];
}
- (void)webViewDidFinishLoad:(UIWebView *) webView
{
[[self activityIndicator] stopAnimating];
}
Soy nuevo en el desarrollo de iphone. Quiero establecer un indicador de actividad en la barra de navegación. Veo mi indicador de actividad debajo de la barra de navegación. Mi código está aquí.
-(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];
}
¿Cómo puedo configurar mi indicador de actividad en la barra de navegación? Por favor, ayúdenme. Gracias.
Agregué el siguiente fragmento de código en la vista donde quería el indicador de actividad en la barra de navegación.
activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator];
[self navigationItem].rightBarButtonItem = barButton;
[activityIndicator startAnimating];
Aquí está creando una nueva vista de indicador de actividad, lo cual está bien, pero no se está refiriendo al indicador de actividad en la barra de estado.
Para mostrar el indicador de actividad en la barra de estado, simplemente llame a esto:
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
Código 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()
Como WhatsApp:
//Declarar
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
}
En Swift, hice lo siguiente:
Habilitar: UIApplication.sharedApplication().networkActivityIndicatorVisible = true
Deshabilitar: UIApplication.sharedApplication().networkActivityIndicatorVisible = false
Esto funcionó para mí en Swift:
let activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView.init(activityIndicatorStyle: .White)
let refreshBarButton: UIBarButtonItem = UIBarButtonItem(customView: activityIndicator)
self.navigationItem.leftBarButtonItem = refreshBarButton
activityIndicator.startAnimating()
Traté de usarlo ahora y el código mencionado por el guerrero no funcionó exactamente como está. Tuve que cambiar la inicialización de activityIndicator:
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
Con este cambio, debería funcionar como se esperaba.
Tuve una pregunta similar con la respuesta aquí: iphone - cambiar programáticamente el botón de la barra de navegación al indicador de actividad
Quería cambiar el botón de actualización en la barra de navegación al indicador de actividad y viceversa.
tratar . self.navigationItem.leftBarButtonItem.customView = su vista
En el guión gráfico: BarButtonItem
en la barra de navegación. Añada View para ser hijo de su BarButtonItem
y ActivityIndicator
para ser hijo de su View
.
Rápido
- Connet
UIBarButtonItem
delstoryboard
a suyourViewController
- elimine la
week
de su definición como:@IBOutlet var btNavigaitonRight: UIBarButtonItem!
Utilice estos métodos para iniciar y detener el indicador de actividad:
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) }