2009-09-21 13 views

risposta

31

La risposta precedente era vicina, non abbastanza compilativa. Ecco cosa vuoi veramente:

// Info button 
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton]; 
+0

Come si fa a implementare il metodo "showInfoView" che hai indicato? – Shawn

+0

Shawn, hai solo - (void) showInfoView: (id) sender {altrove nella tua implementazione. Se non c'è: alla fine del metodo, nessun argomento verrà passato e si può fare a meno del mittente: (id). – quantumpotato

0

Dovresti essere in grado di aggiungere un pulsante di tipo "Informazioni luce" all'oggetto navigationItem del controller di visualizzazione che UINavigationController sta attualmente visualizzando. Qualcosa di simile potrebbe andare nel tuo codice controller vista:

- (void) viewDidLoad { 
    UIButton * info = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
    // set your button's target and selector for whatever action here. 
    self.navigationItem.rightBarButtonItem.customView = info; 
} 
+0

Kevlar, Si prega di modificare la risposta .. buttonType è una proprietà di sola lettura. Non puoi impostarlo! – prakash

+0

mio male, stavo andando dalla memoria e non aveva i documenti di fronte a me; cambiando ora. – Kevlar

3

C'è una perdita di memoria nella risposta sopra. Dovresti usare "autorelease" per evitarlo. Ho provato a modificare la risposta ma non ho avuto successo finora.

// Info button 
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease]; 

QUESTO È IL MODO CORRETTO DI FARLO.

+2

L'azione corretta non sarebbe quella di modificare la risposta, ma di pubblicare la propria risposta * con la versione della soluzione * o, una volta ottenuta la reputazione 50, di commentare la risposta in modo che il poster possa correggerla. È probabile che i commenti senza soluzione pubblicati come risposte vengano eliminati. Infine, non esiste una "risposta sopra" perché la posizione delle risposte dipende dalla scheda di ordinamento utilizzata per visualizzare la pagina, i voti e se una risposta è accettata o cancellata. Meglio riferirsi a risposte o commenti sulla pagina in base al nome del poster. –

+0

grazie. non lo sapevo! –

0

È inoltre possibile utilizzare il target e il selettore del pulsante della barra corrente per il pulsante informazioni.

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self.barButtonItem.target action:self.barButtonItem.action forControlEvents:UIControlEventTouchUpInside]; 
self.barButtonItem.customView = infoButton; 

In questo modo, qualsiasi azione o segui accoppiata alla voce del pulsante della barra verrà trasferita al pulsante delle informazioni.

Problemi correlati