Какова лучшая реализация для утверждения кода для всех селекторов viewXXX? - PullRequest
0 голосов
/ 13 октября 2011

Прежде всего: мой вопрос очень теоретический. Даже если я опубликую пример, я просто хочу знать, какая реализация является лучшей для решения этой проблемы. Может быть, вы будете смеяться, когда будете читать этот вопрос, потому что он очень принципиален - но я хочу понять, как справиться с такой ситуацией.

Представьте себе следующее: у вас есть приложение, которое взаимодействует с внешним API через XML. Фактически это представление не может появиться сразу, потому что API нужно время, чтобы среагировать. Моя идея заключалась в том, чтобы реализовать подпредставление, которое содержит анимацию загрузки. Когда API отправляет ответ, это подпредставление удаляется, и появляется главное представление. Вот мой пример:

- (void)viewWillAppear:(BOOL)animated {

    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
    [myView setBackgroundColor:[UIColor whiteColor]]; 
    myView.tag = 1;

    UIActivityIndicatorView  *loadingView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    loadingView.frame = CGRectMake(145, 160, 25, 25);

    [myView addSubview:loadingView];
    [self.view addSubview:myView]; 
    [loadingView startAnimating];

}

- (void)viewDidAppear:(BOOL)animated
{

    [self loadXMLData]; 
    [self.tableView reloadData]; 
    [[self.view viewWithTag:1] removeFromSuperview]; 
}

Все работает отлично. Моя проблема заключается в следующем: не только это представление, где я должен сделать это. Мои приложения состоят из множества представлений, так как лучше всего избежать повторения этого кода? Я подумал о следующем: я изменяю селектор viewDidAppear (UIKit UIViewController) и помещаю код в него. Я не знаю, позволяет ли Apple менять свои рамки. Кроме того, это выглядит очень грязно для меня; o) Кто-то может сказать мне, как это обычно делается? Спасибо!

(надеюсь, вы понимаете меня, мой родной язык не английский :-()

1 Ответ

5 голосов
/ 13 октября 2011

Почему бы просто не создать подкласс UIViewController, в котором этот код реализован в viewWillAppear и viewDidAppear, а затем наследовать каждый другой контроллер представления в приложении от этого "базового" подкласса, а не UIViewController?Это будет намного проще, чем пытаться что-либо сделать напрямую с UIViewController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...