내가 과거에 이런 짓을 한 방법은 활동보기 또는 적절한보기 중 하나를 수납하는 콘텐츠보기를하는 것입니다.
기본보기에 하위보기를 추가하는 대신보기 컨트롤러의 코코아 콩을 비워두고 적절한보기를 위해 새보기 (예 : 아래보기의 표보기)를 만듭니다.
또한 진행률 표시기 (threaded progress indicator) 또는 일부) 및 "결과 없음"보기로 활동보기를 작성하십시오.
//
// 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