2012-03-23 15 views
8

Ho un normale UITableViewController e un UITableView come unica visualizzazione e desidero avere un UIActivittyIndicatorView oltre alla visualizzazione tabella.Impostazione di UIActivityIndicatorView per UITableViewController a livello di programmazione

quindi ho bisogno di una struttura di vista come questo:

view (UIView): 
    tableView 
    activityIndicatorView 

Qual è il modo più pulito per farlo senza InterfaceBuilder? Credo di aver bisogno di scavalcare il metodo loadView:, ma non ci sono riuscito finora.

risposta

27

UPDATE per ARC e iOS 5.0+ (credo vecchia versione deve essere rimosso già, come abbiamo nuovi, meglio API :)):

Aggiungi intestazione .h file di vostra UIViewController sottoclasse:

@property (nonatomic, weak) UIActivityIndicator *activityIndicator; 

e sovrascrivere i metodi nel file .m della vostra UIViewController sottoclasse:

- (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)); 
} 

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

non ARC versione, iOS < 5,0:

Si dovrebbe eseguire l'override metodo

-(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]; 
} 

Inoltre, aggiungere

@property (nonatomic, assign) UIActivityIndicatorView *activityIndicator; 

al file di intestazione

e

@synthesize activityIndicator; 

al file .m

+0

non dovrebbe essere 'CGRect viewBounds = self.view.bounds;' invece di 'CGSize viewBounds ...'? – wmora

Problemi correlati