سؤال

أنا جديد في تطوير 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];

هذا عمل بالنسبة لي في سويفت:

let activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView.init(activityIndicatorStyle: .White)
let refreshBarButton: UIBarButtonItem = UIBarButtonItem(customView: activityIndicator)
self.navigationItem.leftBarButtonItem = refreshBarButton
activityIndicator.startAnimating()

على لوحة القصة: خلق BarButtonItem في شريط الملاحة. أضف منظر ليكون ابنك BarButtonItem و ActivityIndicator أن تكون ابنك View.

مثل 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
}

شكرًا! مؤشر بلدي يعمل الآن.

أشارك مثال رمز لزملائه noobs ، لوضع هذا في السياق.

- (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];
  }

في سويفت ، فعلت ما يلي:

ممكن: UIApplication.sharedApplication().networkActivityIndicatorVisible = true

إبطال: UIApplication.sharedApplication().networkActivityIndicatorVisible = false

سريع

  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)
    }
    

كان لدي سؤال مماثل مع الرد هنا:iPhone - قم بتغيير زر شريط التنقل بشكل برمجي إلى مؤشر النشاط

أردت تغيير زر التحديث في شريط NAV إلى مؤشر النشاط والعودة مرة أخرى.

جرب هذا : self.navigationItem.leftBarButtonItem.customView = your_view

حاولت استخدامه الآن ولم يكن الرمز الذي ذكره المحارب يعمل تمامًا كما هو. اضطررت إلى تغيير تهيئة ActivityIndicator:

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

مع هذا التغيير ، يجب أن يعمل كما هو متوقع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top