私はiphone開発が初めてです。ナビゲーションバーにアクティビティインジケーターを設定します。ナビゲーションバーの下にアクティビティインジケーターが表示されます。私のコードはここにあります
- (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];
}
ナビゲーションバーでアクティビティインジケーターを設定するにはどうすればよいですか?私を助けてください。ありがとう。
ナビゲーションバーのアクティビティインジケーターが必要なビューに、以下のコードを追加します。
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator];
[self navigationItem].rightBarButtonItem = barButton;
[activityIndicator startAnimating];
スウィフトコード:
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()
ここでは新しいアクティビティインジケータビューを作成していますが、これは問題ありませんが、ステータスバーのアクティビティインジケータを参照しているわけではありません。
ステータスバーにアクティビティインジケーターを表示するには、次のように呼び出します。
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
これは私にとってSwiftでうまくいきました:
let activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView.init(activityIndicatorStyle: .White)
let refreshBarButton: UIBarButtonItem = UIBarButtonItem(customView: activityIndicator)
self.navigationItem.leftBarButtonItem = refreshBarButton
activityIndicator.startAnimating()
WhatsAppのように:
//宣言する
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
}
ストーリーボード:ナビゲーションバーにBarButtonItem
を作成します。 BarButtonItem
の息子になるようにビューを追加し、ActivityIndicator
の息子になるようにView
を追加します。
ありがとう!私のインディケータは現在機能しています。
私は、これを前後関係に置くために、仲間の初心者のためのコード例を共有しています。
-(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];
//完全を期すために-これはプログラムで[戻る]ボタンを表示/非表示にする方法です
if ( bShowBack == YES )
self.navItemBar.leftBarButtonItem = self.backButton;
else
self.navItemBar.leftBarButtonItem = Nil;
// UIWebViewでアクティビティインジケーターを使用するため、次のようにトリガーします
- (void)webViewDidStartLoad:(UIWebView *)webView
{
[[self activityIndicator] startAnimating];
}
- (void)didFailLoadWithError:(UIWebView *)webView
didFailLoadWithError:(NSError *)error
{
[[self activityIndicator] stopAnimating];
}
- (void)webViewDidFinishLoad:(UIWebView *) webView
{
[[self activityIndicator] stopAnimating];
}
Swift
UIBarButtonItem
からstoryboard
からyourViewController
week
をその定義から削除します:@IBOutlet var btNavigaitonRight: UIBarButtonItem!
アクティビティインジケータを開始および停止するには、次のメソッドを使用します。
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)
}
Swiftでは、次のことを行いました。
有効:UIApplication.sharedApplication().networkActivityIndicatorVisible = true
無効:UIApplication.sharedApplication().networkActivityIndicatorVisible = false
私はここで同様の質問に回答しました: iphone-プログラムでナビゲーションバーボタンをアクティビティインジケーターに変更します
ナビゲーションバーの更新ボタンをアクティビティインジケーターに変更して、もう一度元に戻したいと思いました。
これを試して : self.navigationItem.leftBarButtonItem.customView = your_view
私は今それを使おうとしました、そして、戦士によって言及されたコードは、そのまま正確に機能しませんでした。 activityIndicatorの初期化を変更する必要がありました:
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
この変更により、期待どおりに動作するはずです。