Casa Social media Come aggiungere un pulsante quando il controller di visualizzazione viene sostituito nella tua app iOS - manichini

Come aggiungere un pulsante quando il controller di visualizzazione viene sostituito nella tua app iOS - manichini

Video: Building Dynamic Web Apps with Laravel by Eric Ouyang 2025

Video: Building Dynamic Web Apps with Laravel by Eric Ouyang 2025
Anonim

Poiché potresti sostituire il controller di visualizzazione nella tua app iOS con uno nuovo - anche se appartenente alla stessa classe base - il nuovo controller di visualizzazione ha nessun accesso al pulsante che deve visualizzare o al popover che deve essere eliminato. Fortunatamente, la gente di Apple offre un posto perfetto per farlo.

Quando viene attivato un seguito - che si fa quando si tocca una voce di tabella - ma prima che il nuovo controller faccia scorrere la vista in posizione, il runtime dello storyboard chiama il metodo del controller di visualizzazione corrente in modo che possa trasferire i dati al controller di visualizzazione che è sta per essere mostrata.

Ciò significa che è possibile passare le informazioni sul pulsante al nuovo controller di visualizzazione prima ancora che venga avviato. Quindi, prepareForSegue: sender:, entrambi assegneranno il pulsante da utilizzare in viewDidLoad e chiuderanno anche il controller della vista.

prepareForSegue: mittente: è un metodo di controllo della vista che notifica a un controller di visualizzazione che sta per essere eseguito un passaggio. segue è l'oggetto UIStoryboadSegue e contiene informazioni sui controller della vista coinvolti nel seguito.

Anche se l'implementazione predefinita di questo metodo non fa nulla, le sottoclassi di UIViewController possono sovrascriverle e passare i dati al controller della vista che sta per essere visualizzato. L'oggetto segue ha proprietà che puntano al controller della vista sorgente e al controller della vista di destinazione. Il seguito è l'unico oggetto che conosce contemporaneamente sia i controller di visualizzazione di origine che di destinazione.

mittente è l'oggetto che ha causato il seguito, ma non sarà necessario utilizzarlo qui.

Si aggiunge il codice al metodo prepareForSegue: sender: per rendere il DestinationController delegato da UISplitViewController e assegnare le proprietà popOverButton e masterPopoverController.

Inoltre, il popover viene rimosso quando è presente, quindi l'utente non deve toccare la vista per sbarazzarsi di esso.

Per fare tutto questo, aggiungi questo codice a MasterViewController. m.

- (void) prepareForSegue: (UIStoryboardSegue *) segue mittente: (id) sender {if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {DetailViewController * currentDetailViewController; if ([[self. splitViewController. viewControllers lastObject] isKindOfClass: [classe UINavigationController]]) currentDetailViewController = (DetailViewController *) ((UINavigationController *) [self. splitViewController. viewControllers lastObject]). topViewController; else currentDetailViewController = [self.splitViewController. viewControllers lastObject]; if (currentDetailViewController. masterPopover Controller! = nil) [currentDetailViewController. masterPopover Controller dismissPopoverAnimated: YES]; DetailViewController * destinationDetailViewController; if ([segue: destinationViewController isKindOfClass: [UINavigationController class]]) destinationDetailViewController = (DetailViewController *) ((UINavigationController *) segue. destinationViewController). topViewController; else destinationDetailViewController = segue. destinationViewController; se stesso. splitViewController. delegate = destinationDetailViewCon troller; destinationDetailViewController. popOverButton = currentDetailViewController. popOverButton; destinationDetailViewController. masterPopoverController = currentDetailViewController. masterPopoverController;}}

Si inizia trovando il controller della Vista dettagliata corrente perché ha le proprietà del pulsante e del popover necessarie per il nuovo controller della vista.

Questo codice sembra più complicato di quello che è. Per prima cosa controlla se stai utilizzando un iPad. In tal caso, si ottiene il controller della vista dettagliata corrente accedendo all'elenco dei controller della vista nell'array viewController di splitViewController. Fortunatamente, la classe UIViewController ha una proprietà splitViewController per renderla più facile.

Quindi si controlla se un controller di navigazione si trova nell'array viewControllers e, se presente, si ottiene il controller ViewView del controller di navigazione (il controller della vista corrente); in caso contrario, è sufficiente utilizzare il controller nell'array. (Noterai un sacco di casting in corso qui)

if ([[self. SplitViewController. ViewControllers & # x2028; lastObject] 

isKindOfClass: [UINavigationController & # x2028; class]])

currentDetailViewController = (RTDetailViewController *)

(UINavigationController *)

[self. splitViewController. viewControllers

LastObject]). topViewController; else

currentDetailViewController = & # x2028; [se stesso. splitViewController. viewControllers

LastObject];

Quindi, se vedi un popover, vuoi chiuderlo. Controllate per vedere se un controller popover (è per questo che avete reso accessibile la proprietà spostandola nel file di intestazione.

if (currentDetailViewController. MasterPopoverController 

! = Nil)

[currentDetailViewController. MasterPopoverController > dismissPopoverAnimated: YES];

Successivamente, si trova il nuovo controller di destinazione (quello a cui è stata eseguita la transizione) utilizzando la logica simile alla logica utilizzata per trovare il controller di visualizzazione dettagli corrente.

if ([segue. destinationViewController < & # x2028; isKindOfClass: [UINavigationController

class]]) destinationDetailViewController = 

(DetailViewController *) ((UINavigationController *)

segue. DestinationViewController). TopViewController; else

destinationDetailViewController =

segue. destinationViewController;

Quindi è sufficiente impostare il delegato Split View Controller sul nuovo controller di visualizzazione, in modo da ottenere splitViewController: willHideViewController: withBarButtonItem: forPopoverController: an d splitViewController: willShowViewController: invalidatingBarButtonItem: messages.

di sé. splitViewController. delegate = destinationDetailViewController;

Infine, si assegnano le proprietà popOverButton e masterPopOverController nel nuovo controller di visualizzazione.

destinationDetailViewController. popOverButton =

currentDetailViewController. popOverButton;

destinationDetailViewController. masterPopoverController = 

currentDetailViewController. masterPopoverController;

Certamente, questo semplicemente elimina il popover e assegna le proprietà, ma non fa nulla per visualizzare il pulsante. Questo viene effettivamente fatto in viewDidLoad.

È anche possibile specificare la dimensione della finestra popover assegnando un valore alla proprietà prefferedContentSize. È necessario essere consapevoli che la dimensione effettiva può essere ridotta in modo che il popover si adatti allo schermo e che il popover non si sovrapponga a una tastiera quando viene presentata una tastiera. Puoi vedere il codice che lo fa nel metodo awakeFromNib di MasterViewController.

- (void) awakeFromNib {if ([[UIDevice currentDevice]

userInterfaceIdiom] == UIUserInterfaceIdiomPad)

& # x2028; {se stesso. clearsSelectionOnViewWillAppear = NO; 

di sé. preferredContentSize = CGSizeMake

(320, 0, 600. 0);} [super awakeFromNib];}

Il messaggio awakeFromNib viene inviato a un oggetto che è stato istanziato dallo storyboard dopo che tutti gli oggetti sono stati caricati e inizializzati. Quando il messaggio viene inviato, sono state impostate tutte le connessioni di uscita e di azione.

Se decidi di ignorare il consiglio qui e non chiudere il controller popover, tocca fuori dalla finestra popover e il popover verrà rimosso. Tuttavia, è possibile consentire all'utente di interagire con le viste specificate e non ignorare il popover, utilizzando la proprietà passthroughViews (anche se non lo farete qui). Dovresti quindi scartare il popover da solo.

Come aggiungere un pulsante quando il controller di visualizzazione viene sostituito nella tua app iOS - manichini

Scelta dell'editore

Vantaggi di base della rete - manichini

Vantaggi di base della rete - manichini

Se la verità viene detta, le reti di computer sono un problema da impostare. Perché i vantaggi di avere una rete rendono la pena di crearne uno utile. Non è necessario essere un dottorato di ricerca per comprendere i vantaggi del networking. Le reti riguardano esclusivamente la condivisione. Nello specifico, le reti riguardano la condivisione di tre elementi: informazioni, risorse, ...

Biometria L'accettazione, la privacy e la legge - manichini

Biometria L'accettazione, la privacy e la legge - manichini

La tecnologia biometrica non è affatto universalmente accettata da tutti gli utenti. Ci sono una serie di considerazioni sociali e legali che danno ad ogni organizzazione una pausa prima di fare il salto a capofitto nell'implementazione di un sistema biometrico. Le persone sono più a loro agio con i sistemi di raccolta biometrici che sono i meno intrusivi. Scanner per retina e nasi elettronici sono ...

Biometria Nozioni di base - manichini

Biometria Nozioni di base - manichini

La biometria non è roba da fantascienza. Puoi trovare una dozzina di modi più o meno efficaci per utilizzare la biometria per identificare qualcuno, ognuno dei quali si divide in due classi: la biometria fisiologica misura una parte specifica della struttura o della forma di una porzione del corpo di un soggetto. La biometria comportamentale è più interessata a come ...

Scelta dell'editore

Come creare un nuovo dizionario personalizzato in Excel 2007 - dummies

Come creare un nuovo dizionario personalizzato in Excel 2007 - dummies

In Excel 2007, è possibile creare dizionari personalizzati da utilizzare quando si esegue il controllo ortografico dei fogli di lavoro. Utilizzare il pulsante Aggiungi al dizionario nella finestra di dialogo Controllo ortografico per aggiungere parole sconosciute a un dizionario personalizzato. Per impostazione predefinita, Excel aggiunge queste parole a un file dizionario personalizzato denominato CUSTOM. DIC, ma è possibile creare una nuova personalizzazione ...

Come creare un componente aggiuntivo da un file di cartella di lavoro Excel Excel normale in VBA - modi di dire

Come creare un componente aggiuntivo da un file di cartella di lavoro Excel Excel normale in VBA - modi di dire

Sebbene sia possibile convertire qualsiasi cartella di lavoro di Excel in un componente aggiuntivo, non tutte le cartelle di lavoro traggono vantaggio da questa conversione. Una cartella di lavoro senza macro rende un componente aggiuntivo inutile. In effetti, gli unici tipi di cartelle di lavoro che traggono vantaggio dall'essere convertiti in un componente aggiuntivo sono quelli con macro. Ad esempio, una cartella di lavoro costituita da macro generiche (Sub ...

Come creare una nuova cartella di lavoro in Excel 2010 - dummy

Come creare una nuova cartella di lavoro in Excel 2010 - dummy

Se si lavora in Microsoft Excel 2010 e vuoi iniziare a lavorare in un nuovo file di cartella di lavoro di Excel, puoi facilmente creare una nuova cartella di lavoro. Per fare ciò, puoi usare un comando nella scheda File o una scorciatoia da tastiera. Fare clic sulla scheda File. Excel visualizza la visualizzazione Backstage, in cui è possibile accedere ai comandi relativi ai file. ...

Scelta dell'editore

Usa lo strumento Gomma in Adobe Illustrator CS5 - manichini

Usa lo strumento Gomma in Adobe Illustrator CS5 - manichini

Adobe Illustrator Creative Suite 5 (Adobe CS5) Illustrator è utilizzato per rimuovere rapidamente aree di grafica con la stessa facilità con cui si cancellano i pixel in Photoshop, accarezzando con il mouse su qualsiasi forma o gruppo di forme. Facendo doppio clic sullo strumento Gomma, è possibile definire il diametro, l'angolo e la rotondità della gomma. Se stai usando un ...

Trasforma gli strumenti in Adobe Illustrator CS5 - dummies

Trasforma gli strumenti in Adobe Illustrator CS5 - dummies

I più popolari strumenti di trasformazione in Adobe Creative Suite 5 (Adobe CS5) Illustrator - Rifletti, scala, inclina, rimodella e Trasformazione libera: sono facili da usare e modificano rapidamente la tua illustrazione. Lo strumento Rifletti Niente è simmetrico, giusto? Forse no, ma gli oggetti non creati simmetricamente in Illustrator possono sembrare off-kilter. Utilizzando lo strumento Rifletti, si ...

Quando utilizzare Adobe CS5 Illustrator - dummies

Quando utilizzare Adobe CS5 Illustrator - dummies

Utilizzando Adobe Creative Suite 5 (Adobe CS5) Illustrator anziché Photoshop , ottieni diversi benefici. Potresti aver sentito che Illustrator è migliore per la grafica vettoriale, ma perché e che altro porta? Illustrator può salvare ed esportare immagini nella maggior parte dei formati di file. Scegliendo di salvare o esportare, è possibile creare un ...