4

現在、API へのフェッチが行われるたびに呼び出されるグローバル アクティビティ インジケーターを迅速に作成しようとしています。アイデアは、アクティビティ インジケーターがナビゲーション バー (ナビゲーション ビュー コントローラーの子) の左上に表示され、すべてのアプリ ページで使用できるようにすることです。

新しいアカウント / 担当者が少ないため、サンプル画像を表示できません

アクティビティ インジケーターが正しく表示されています。アプリのどのページからでも利用できるようにする方法がわかりません。拡張機能を検討しましたが、最適なアプローチ方法がわかりません。どんな助けでも大歓迎です。

活動指標コード:

let activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.White)
var activityItem = UIBarButtonItem()

func navBarActivity() {
    // Call navBarActivity() to start activity indicator
    // Use navigationItem.leftBarButtonItem = nil to stop activity indicator
    activityIndicator.startAnimating()
    activityIndicator.hidden = false

    self.activityItem = UIBarButtonItem(customView: activityIndicator)
    self.navigationItem.leftBarButtonItem = activityItem
}
4

1 に答える 1

7

このような拡張をお勧めします。

extension UIViewController {
    func displayNavBarActivity() {
        let indicator = UIActivityIndicatorView(activityIndicatorStyle: .White)
        indicator.startAnimating()
        let item = UIBarButtonItem(customView: indicator)

        self.navigationItem.leftBarButtonItem = item
    }

    func dismissNavBarActivity() {
        self.navigationItem.leftBarButtonItem = nil
    }
}

API呼び出しself.displayNavBarActivity()の前に呼び出し、self.dismissNavBarActivity()API呼び出しが完了した後に呼び出します。

networkActivityIndicatorVisibleただし、のチェックをしてほしいUIApplication。このオプションの使用を検討してください。

アプリがネットワーク アクティビティを表示する必要がある場合は YES を指定し、表示しない場合は NO を指定します。デフォルト値は NO です。ステータス バーの回転するインジケータは、ネットワーク アクティビティを示します。アプリは、このインジケーターを明示的に非表示または表示することができます。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/#//apple_ref/occ/instp/UIApplication/networkActivityIndi​​catorVisible

于 2015-07-02T11:43:51.777 に答える