2012-03-23 8 views
8

私は通常のUITableViewControllerUITableViewを唯一のビューとして持っており、テーブルビューに加えてUIActivittyIndicatorViewが必要です。UITableViewControllerのUIActivityIndi​​catorViewをプログラムで設定する

だから私はこのようなビュー構造が必要になります。

view (UIView): 
    tableView 
    activityIndicatorView 

InterfaceBuilderなしにそれを行うためのクリーンな方法は何ですか?私はloadView:メソッドをオーバーライドする必要があると思いますが、これまでのところ成功していません。 ARCとiOS用

答えて

27

UPDATE 5.0+(私は古いバージョンは、我々は新しい、より良いAPIの:)を持っているとして、すでに削除する必要がありだと思う):

があなたのUIViewControllerサブクラスの.hファイルをヘッダに追加

@property (nonatomic, weak) UIActivityIndicator *activityIndicator; 
あなた UIViewControllerサブクラスの.mファイル内

とオーバーライドメソッド:

- (void)loadView { 
    [super loadView]; 
    UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
    // If you need custom color, use color property 
    // activityIndicator.color = yourDesirableColor; 
    [self.view addSubview:activityIndicator]; 
    [activityIndicator startAnimating]; 
    self.activityIndicator = activityIndicator; 
} 

- (void)viewWillLayoutSubviews { 
    [super viewWillLayoutSubviews]; 
    CGSize viewBounds = self.view.bounds; 
    self.activityIndicator.center = CGPointMake(CGRectGetMidX(viewBounds), CGRectGetMidY(viewBounds)); 
} 

=========================== =====================

非ARC版、iOSの< 5.0:

あなたはヘッダファイル

@property (nonatomic, assign) UIActivityIndicatorView *activityIndicator; 

を追加し、また、方法

-(void)loadView { 
    [super loadView]; 
    self.activityIndicator = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray] autorelease]; 
    [self.view addSubview:self.activityIndicator]; 
    self.activityIndicator.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2); 
    [self.activityIndicator startAnimating]; 
} 

をオーバーライドする必要があります

@synthesize activityIndicator; 

.mファイル

+0

CGSize viewBounds ...の代わりに 'CGRect viewBounds = self.view.bounds;'にするべきではありませんか? – wmora

関連する問題