53

私は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];
}

ナビゲーションバーでアクティビティインジケーターを設定するにはどうすればよいですか?私を助けてください。ありがとう。

4

12 に答える 12

87

ナビゲーションバーのアクティビティインジケーターが必要なビューに、以下のコードを追加します。

activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator];
[self navigationItem].rightBarButtonItem = barButton;
[activityIndicator startAnimating];
于 2010-02-18T19:01:24.560 に答える
27

スウィフトコード:

let activityIndicator = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
let barButton = UIBarButtonItem(customView: activityIndicator)
self.navigationItem.setRightBarButton(barButton, animated: true)
activityIndicator.startAnimating()
于 2016-04-12T22:31:51.740 に答える
13

ここで新しいアクティビティインジケータービューを作成していますが、これは問題ありませんが、ステータスバーのアクティビティインジケーターを参照していません。

ステータスバーにアクティビティインジケーターを表示するには、次のように呼び出します。

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
于 2010-02-18T14:59:21.727 に答える
13

これはSwiftで私のために働いた:

let activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView.init(activityIndicatorStyle: .White)
let refreshBarButton: UIBarButtonItem = UIBarButtonItem(customView: activityIndicator)
self.navigationItem.leftBarButtonItem = refreshBarButton
activityIndicator.startAnimating()
于 2016-07-15T21:54:42.010 に答える
5

迅速

  1. UIBarButtonItemから接続storyboardするyourViewController
  2. week次のように定義から削除します。@IBOutlet var btNavigaitonRight: UIBarButtonItem!
  3. アクティビティインジケータの開始と停止には、次の方法を使用します。

    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)
    }
    
于 2018-07-17T10:54:37.780 に答える
4

ストーリーボード上:BarButtonItemナビゲーションバーで作成します。ビューを追加して、あなたの息子になり、あなたBarButtonItemActivityIndicator息子になりますView

于 2014-12-15T12:51:11.190 に答える
3

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
}
于 2017-11-21T08:10:34.417 に答える
2

ありがとう!私のインジケーターは現在機能しています。

これをコンテキストに入れるために、仲間の初心者向けのコード例を共有しています。

-(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];
  }
于 2014-07-10T11:01:25.153 に答える
2

Swiftでは、次のことを行いました。

有効: UIApplication.sharedApplication().networkActivityIndicatorVisible = true

無効にする: UIApplication.sharedApplication().networkActivityIndicatorVisible = false

于 2015-01-07T13:08:05.017 に答える
1

私はここでの応答で同様の質問をしました: iphone-プログラムでナビゲーションバーボタンをアクティビティインジケーターに変更します

ナビゲーションバーの更新ボタンをアクティビティインジケーターに変更して、もう一度戻したいと思いました。

于 2010-02-18T19:51:53.010 に答える
1

これを試して :self.navigationItem.leftBarButtonItem.customView = your_view

于 2010-02-19T07:37:04.500 に答える
0

私は今それを使おうとしましたが、戦士が言及したコードはそのままでは機能しませんでした。activityIndi​​catorの初期化を変更する必要がありました。

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

この変更により、期待どおりに機能するはずです。

于 2014-01-01T21:33:51.083 に答える