Domanda

Ho un'app basata sulla navigazione dove spingo UITableViewControllers nello stack. Vorrei aggiungere un UImage in background a tutti i miei UITableViewControllers . Non un UIColor , ma un UImage . So come posso farlo utilizzando un file Nib e impostando lo stesso UITableView per utilizzare [UIColor ClearColor] , ma non voglio esaminare tutti i miei UITableViewControllers e cambiarli in file Nib , ecc.

Ho anche trovato questa soluzione che sarebbe grandiosa se stessi usando un solo controller di visualizzazione tabella nella mia app. Penso che potrebbe esserci un modo per farlo funzionare, aggiungendo una sottoview "sotto" la mia vista tabella creata per impostazione predefinita in un UITableViewController ?

Qualsiasi suggerimento sarebbe fantastico.

È stato utile?

Soluzione

È un po 'diverso in un'app basata sulla navigazione: basta cambiare lo sfondo della vista di navigazione su cui si trova ciascuna vista della tabella. Posizionando il seguente codice in viewDidLoad di ogni UITableViewController funziona:

self.navigationController.view.backgroundColor = 
[UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage.png"]];
self.tableView.backgroundColor = [UIColor clearColor];

Ma potresti doverlo fare solo una volta, al livello più alto del controller di navigazione, piuttosto che in ogni controller di visualizzazione tabella (anche se dovrai comunque impostare ogni sfondo per cancellare).

Altri suggerimenti

Su iOS6 usa questo:

UIImageView *boxBackView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TextureBoxboard.jpg"]];
[self.tableView setBackgroundView:boxBackView];

Se la tua classe è una sottoclasse UIViewController, puoi farlo in questo modo:

[self.view setBackgroundColor:
     [UIColor colorWithPatternImage:
      [UIImage imageWithContentsOfFile:
       [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
        @"background.png"]]]];
UIImageView *backgroundView = 
  [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
backgroundView.frame = CGRectMake(0, 
                                  0, 
                               self.navigationController.view.frame.size.width, 
                               self.navigationController.view.frame.size.height);
backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | 
                                  UIViewAutoresizingFlexibleHeight;
[self.navigationController.view insertSubview:backgroundView atIndex:0];
[backgroundView release];
self.tableView.backgroundColor = [UIColor clearColor];

Come diceva Gorm

  

è necessario farlo una sola volta, al livello superiore di UINavigationController

La risposta fornita a Madhup è la risposta corretta. UITableViewController è una sottoclasse di UIViewController, quindi aggiungendo che al metodo viewDidLoad del tuo UITableViewController funziona alla grande.

A partire da iOS 3.2, esiste [UITableView setBackgroundView:], che potrebbe essere più semplice di alcune delle altre soluzioni proposte in futuro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top