我已经在过去这样做的方式是有其容纳任何活动视图或视图正确的内容视图。
在视图控制器的笔尖,而不是添加到子视图的主视图,留空,并为视图正确新视图(如在下面的示例的表图)。
另外创建活动图(具有螺纹进度指示器或诸如此类)和一个“无结果”视图。
//
// ContainerViewController.h
//
#import <UIKit/UIKit.h>
@interface ContainerViewController : UIViewController
{
UIView *myContainerView;
UITableView *myTableView;
UIView *mySearchActivityView;
UIView *myZeroResultsView;
UIView *myCurrentlyShowingView;
}
@property (retain, nonatomic) IBOutlet UIView *containerView;
@property (retain, nonatomic) IBOutlet UITableView *tableView;
@property (retain, nonatomic) IBOutlet UIView *searchActivityView;
@property (retain, nonatomic) IBOutlet UIView *zeroResultsView;
@property (assign) UIView *currentlyShowingView;
@end
//
// ContainerViewController.m
//
#import "ContainerViewController.h"
@implementation ContainerViewController
@synthesize containerView = myContainerView;
@synthesize tableView = myTableView;
@synthesize searchActivityView = mySearchActivityView;
@synthesize zeroResultsView = myZeroResultsView;
- (void)dealloc
{
[myContainerView release], myContainerView = nil;
[myTableView release], myTableView = nil;
[mySearchActivityView release], mySearchActivityView = nil;
[myZeroResultsView release], myZeroResultsView = nil;
myCurrentlyShowingView = nil;
[super dealloc];
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.currentlyShowingView = mySearchActivityView;
mySearchActivityView.backgroundColor = [UIColor clearColor];
myZeroResultsView.backgroundColor = [UIColor clearColor];
}
- (void)setCurrentlyShowingView:(UIView *)view
{
[myCurrentlyShowingView removeFromSuperview];
CGRect frame = view.frame;
frame.size = myContainerView.frame.size;
view.frame = frame;
[myContainerView addSubview:view];
myCurrentlyShowingView = view;
if (view == myTableView)
[myTableView reloadData];
}
- (UIView *)currentlyShowingView
{
return myCurrentlyShowingView;
}
@end
而且在派生类中的方法-viewDidLoad,掀起了(异步)查询:
- (void)viewDidLoad
{
[super viewDidLoad];
myQueryLoader = [[QueryLoader alloc] initWithQuery:@"whatever" delegate:self];
self.currentlyShowingView = mySearchActivityView;
}
和
然后从类似下面的派生类控制器在代表回拨:
- (void)queryLoader:(QueryLoader *)queryLoader didEndWithResults:(id)results error:(NSError *)error
{
myItems = [results retain];
if (myItems)
self.currentlyShowingView = myTableView;
else
self.currentlyShowingView = myZeroResultsView;
}
希望这有助于!
这是一个有用的博客文章! http://suavesnippets.blogspot.com/2011/06/animation-effect-on-your-splashwelcome.html – Appster 2011-06-14 14:58:09