Как передать показатель активности между методами /

Здравствуйте, у меня есть проблема с добавленным подпредставлением. У меня есть этот код в method1:

UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc]
                                    initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
spinner.center = CGPointMake(160, 500);
spinner.hidesWhenStopped = YES;
[self.view addSubview:spinner];
[spinner startAnimating];

и я хочу добавить

[spinner stopAnimating]

по другому методу2.

Как мне это сделать?

2 ответа

Решение

В вашем файле.m (нет необходимости делать это в.h, если вам не нужно делать это из другого класса):

@interface MyClass ()

@property (strong, nonatomic) UIActivityIndicatorView *spinner;

@end

@implementation MyClass

- (void)someMethod
{
    // where you were calling the code from your post, do this:
    self.spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    self.spinner.center = CGPointMake(160, 500);
    self.spinner.hidesWhenStopped = YES;
    [self.view addSubview:self.spinner];
    [self.spinner startAnimating];
}

- (void)someOtherMethod
{
    [self.spinner stopAnimating];
}

Проблема в том, что вы настроили spinner в вашем коде без сохранения ссылки на него. Таким образом, другой метод не может найти его. У вас есть два варианта:

  • приписывать spinner к переменной экземпляра при ее создании, чтобы другой метод мог использовать эту переменную экземпляра для доступа к счетчику

  • Дать spinner tag так что другой метод может найти его как подпредставление вашего view по его тегу

Другие вопросы по тегам