2009-11-12 9 views
22

Bir UIBarButton'a bir UIActivityIndicatorView döndürücü dairesi nasıl eklerim, böylece bir kullanıcı gezinme çubuğundaki bu düğmelerden birine dokunduğunda, yükleme gerçekleşirken bir döndürücü görürler?UIBarButton'a UIActivityIndicatorView ekleme

cevap

32

(örn: Eğer gezinme çubuğu üzerinde yenile düğmesini olabilir) - Özel bir görünüm UIActivityIndicatorView olmak ile yeni UIBarButtonItem oluşturabilirsiniz:

uiBusy = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
uiBusy.hidesWhenStopped = YES; 
[uiBusy startAnimating]; 
[self.navigationItem.rightBarButtonItem initWithCustomView:uiBusy]; 

Swift Amaç-Cı

let uiBusy = UIActivityIndicatorView(activityIndicatorStyle: .White) 
uiBusy.hidesWhenStopped = true 
uiBusy.startAnimating() 
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: uiBusy) 

Bu, 'un üzerine çıkma tekerleğinin üzerine yazar. İşiniz bittiğinde, rightBarButtonItem'u yeniden oluşturun.

+5

'[self.navigationItem.rightBarButtonItem initWithCustomView: uiBusy]; '' bana çok tehlikeli görünüyor. Ben, emotality'ın yanıtına göre self.navigationItem.rightBarButtonItem = [[UIBarButtonItem ayırma] initWithCustomView: uiBusy]; –

+1

Kayıt için: Genellikle 'uiBusy.activityIndicatorViewStyle = .gray' – Jeremy

+0

ayarlamak istiyoruz uiBusy: 'private var uiBusy: UIActivityIndicatorView { erişmek için hesaplanmış özellik kullanıyorum eğer busyView = self.navigationItem.rightBarButtonItem? .customView olarak?UIActivityIndicatorView { dönüş busyView } başka { izin uiBusy = UIActivityIndicatorView (activityIndicatorStyle: .white) uiBusy.hidesWhenStopped = Gerçek uiBusy.activityIndicatorViewStyle = .Gray self.navigationItem.rightBarButtonItem = UIBarButtonItem (customView: uiBusy) dönüş uiBusy } } ' – Jeremy

-1

UIActivityIndicatorView bir tür görünümdür. Çerçevesini düğmenizin içinde olacak şekilde ayarlayın ve UIBarButton'un görünüm hiyerarşisine eklemek için -addSubview öğesini kullanın.

bunu (muhtemelen ölçekleme yoluyla) alana sığacak ve ortalamak yapmak denemek zorunda beri, basitleştirerek ...

-1

yalancı kod i Xcode bunu kontrol edecek değilim, ama bir şey Bunun gibi:

UIActivityIndicatorView *act = [[UIActivityIndicatorView alloc] init]; 
act.frame = CGMakeRect(3,3,25,25); 
[myBarButton addSubview:act]; 
[act release]; 
+0

'UIBarButtonItem'' UIView' alt sınıfı değildir ve 'addSubview:' içermez. UIBarButtonItem * myBarButton = [UIBarButtonItem alloc] initWithCustomView: act]; 'yerine veya' myBarButton.customView = act; 'gibi bir şey yapmalısınız. –

3

Aslında etkinlik göstergesi araç çubuğu öğesi olarak eklenmez. Mevcut görünümün bir alt görünümüdür.


    UIActivityIndicatorView *act = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
    [act setCenter:CGPointMake(20, 20)]; 
    [act startAnimating]; 
    [self.view addSubview:act]; 
 

-(void)dealloc numaralı belgeden çıkarmayı unutmayın. Bir gezinme çubuğu düğmesini aktivite tekerleği göstermeye çalışıyorsanız

+0

Etkinlik göstergesini kullanma hakkında daha fazla bilgi burada bulabilirsiniz: http://stackoverflow.com/questions/593234/how-to-use-activity-indicator-view-on-iphone –

5
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
activityIndicator.hidesWhenStopped = YES; 
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator]; 

Yeri aşağıdaki nereye kadar gereklidir:

[activityIndicator startAnimating]; 
[activityIndicator stopAnimating]; 
0

bunu kullanın Yöntemleri

-(void)startAniatingActivityIndicator{ 
@try { 
    activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
    activityIndicator.frame = CGRectMake(self.window.frame.size.width-30, 32.5, activityIndicator.bounds.size.width, activityIndicator.bounds.size.height); 
    [self.window addSubview:activityIndicator]; 
    [activityIndicator startAnimating]; 
    [self.window bringSubviewToFront:activityIndicator]; 
} 
@catch (NSException *exception) { 

} 
@finally { 

} 

}

-(void)stopAniatingActivityIndicator{ 
[activityIndicator stopAnimating]; 
[activityIndicator removeFromSuperview]; 
activityIndicator = nil; 

}

İlgili konular