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 2024

Video: Building Dynamic Web Apps with Laravel by Eric Ouyang 2024
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

Impostazioni della fotocamera per il fotografo naturalista - manichini

Impostazioni della fotocamera per il fotografo naturalista - manichini

Hai una fotocamera reflex digitale e vuoi fotografare la fauna selvatica. Se sei pronto per andare in safari con la tua fotocamera, continua a leggere. Queste impostazioni della fotocamera suggerite per la fotografia naturalistica ti aiuteranno a ottenere scatti fantastici. Quando fotografi animali selvatici, devi sapere qualcosa sugli animali che stai fotografando. Prima di ottenere il tuo digitale ...

Impostazioni della fotocamera per fotografare un paesaggio acquatico - manichini

Impostazioni della fotocamera per fotografare un paesaggio acquatico - manichini

L'acqua ferma è un soggetto interessante per un fotografo. I laghi possono essere corpi d'acqua poco profondi con vegetazione sulle coste o possono essere laghi di montagna scavati dai ghiacciai. Un lago salubre brulica di pesci. Dove trovi il pesce, troverai altri animali selvatici che cenano su detto pesce. Le paludi sono letteralmente ...

Acquisizione di close-up con obiettivi zoom standard - dummies

Acquisizione di close-up con obiettivi zoom standard - dummies

Fotografia ravvicinata è una categoria che è possibile perseguire molto efficacemente con un obiettivo zoom standard. Come nel caso dei teleobiettivi, si ingrandisce per ingrandire il soggetto. La differenza fondamentale tra i due, tuttavia, è che in genere sei più vicino quando scatti un primo piano.

Scelta dell'editore

Esegui gestione basata su browser usando Hybridfox - dummies

Esegui gestione basata su browser usando Hybridfox - dummies

Hybridfox fornisce una soluzione di gestione semplificata ma limitata per un numero di ambienti cloud: AWS, Eucalyptus, OpenStack, OpenNebula e HP Cloud. L'obiettivo di questo prodotto è di consentire all'utente di utilizzare un ambiente a browser singolo, Firefox, per gestire senza problemi gli ambienti cloud supportati. È possibile passare da un ambiente cloud all'altro senza utilizzare un'interfaccia diversa per ...

Servizi AWS gratuiti - manichini

Servizi AWS gratuiti - manichini

Nell'osservazione delle pagine AWS (Amazon Web Services), potresti aver notato che non lo fanno t fornire un unico elenco di tutti i servizi gratuiti. Quello che ottieni invece sono vari mix di servizi che ti dicono qualcosa sui servizi ma non ti aiutano davvero a capire quali servizi sono effettivamente disponibili. Questa tabella elenca ...

Esecuzione di download di dati tramite MySQL Workbench con AWS - dummies

Esecuzione di download di dati tramite MySQL Workbench con AWS - dummies

Download di dati si verificano normalmente quando si desidera creare un copia locale dei dati con cui hai lavorato nel cloud AWS. Esistono tutti i tipi di motivi per eseguire questa attività, con le prestazioni di backup e delle applicazioni che costituiscono le due esigenze più comuni. Normalmente, il download dei dati va in un database di sola lettura perché ...

Scelta dell'editore

Come utilizzare le viste ad hoc in SharePoint 2013 - dummies

Come utilizzare le viste ad hoc in SharePoint 2013 - dummies

Gli utenti possono creare viste ad hoc in qualsiasi Viste standard o Foglio dati in SharePoint 2013 utilizzando le intestazioni delle colonne per ordinare e filtrare i dati al volo. Queste modifiche ad hoc non vengono salvate con l'app come sono viste definite. Aiutare gli utenti a essere produttivi utilizzando queste opzioni ad hoc ...

Come utilizzare i gruppi di SharePoint - dummies

Come utilizzare i gruppi di SharePoint - dummies

SharePoint utilizza i gruppi per gestire il processo di concessione a qualcuno dell'accesso al contenuto in un luogo. Ogni gruppo di SharePoint esegue il mapping a un insieme di autorizzazioni che definiscono le attività che un utente può eseguire. La maggior parte degli utenti rientra in uno dei tre gruppi predefiniti di SharePoint: Visitatori del sito: concede l'accesso di sola lettura al sito e consente ...

Come utilizzare i servizi di accesso in linea di SharePoint - dummies

Come utilizzare i servizi di accesso in linea di SharePoint - dummies

Accesso I servizi sono un componente di SharePoint Online, che fa parte della suite di prodotti Office 365, che consente di pubblicare l'applicazione di accesso in un sito di SharePoint. Tutti i moduli, i dati e i report creati in Access vengono importati in SharePoint e l'applicazione diventa immediatamente un'applicazione basata su Web multiutente che ...