哪个是为所有viewXXX选择器声称代码的最佳实现?

Tob*_*lis 0 xcode objective-c uikit

首先:我的问题非常理论化.即使我发布了一个例子,我只想知道哪个实现是解决此类问题的最佳实现.也许当你读这个问题时你会笑,因为它是非常根本的 - 但我想了解如何处理这种情况.

想象一下:您有一个通过XML与外部API通信的应用程序.事实上,视图不能立即出现,因为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]; 
}
Run Code Online (Sandbox Code Playgroud)

Everthing工作正常.我的问题如下:不仅仅是我必须这样做的观点.我的应用程序包含许多视图,那么避免重复此代码的最佳方法是什么?我想到了以下内容:我修改了(UIKit UIViewController)viewDidAppear选择器并将代码放入其中.我不知道Apple是否允许改变他们的框架.此外,它对我来说看起来很脏; o)有人能告诉我这通常是怎么做的吗?谢谢!

(希望你理解我,我的第一语言不是英语:-()

Mat*_*ham 5

为什么不只是做一个子类UIViewController,其在已经实施的代码viewWillAppearviewDidAppear,然后从这个"基地"的子类,而不是继承的UIViewController应用程序中的所有其他视图控制器?这比直接尝试对UIViewController做任何事情要容易得多.