Domov Sociální média Jak přidat tlačítko Když je v aplikaci iOS nahrazen řadič zobrazení - figuríny

Jak přidat tlačítko Když je v aplikaci iOS nahrazen řadič zobrazení - figuríny

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

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

Protože byste mohli nahrazovat řadič zobrazení v aplikaci iOS novým - ačkoli jedním ze stejné základní třídy - nový řadič zobrazení má žádný přístup k tlačítku, který potřebuje k zobrazení, popř. Naštěstí lidé z Apple poskytují ideální místo k tomu.

Je-li spuštěna segue - což děláte, když klepnete na položku tabulky - ale předtím, než nový řadič posune svůj pohled na místo, běhový plán scénáře volá metodu aktuálního ovladače zobrazení tak, aby mohl předávat data kontroleru zobrazení, který je které chcete zobrazit.

To znamená, že můžete přenést informace o tlačítku na nový řadič zobrazení ještě předtím, než se dokonce spustí. Pak prepareForSegue: sender:, oba přiřadí tlačítko, které má být použito v ViewDidLoad, a také odmítne řadič zobrazení.

prepareForSegue: odesílatel: je metoda řadiče zobrazení, která oznamuje kontroléru zobrazení, že se chystá provést chybu. segue je objekt UIStoryboadSegue a obsahuje informace o řadičích zobrazení, které se zabývají segeou.

Přestože výchozí implementace této metody nečiní nic, podtřídy UIViewController ji mohou potlačit a předávat data kontroleru zobrazení, který se chystá zobrazit. Segatický objekt má vlastnosti, které ukazují na kontrolér zdrojového zobrazení i na řadič zobrazení. Segue je jediný objekt, který současně ví o řadičích zdrojového i cílového zobrazení.

odesílatel je objekt, který způsobil, že segue, ale nebudete muset použít zde.

Přidáte kód do metody prepareForSegue: sender:, aby DestinationController delegoval UISplitViewController a přiřadil vlastnosti popOverButton a masterPopoverController.

Také můžete popovídat, když se objeví, aby se uživatel nemohl dotknout zobrazení, aby se ho zbavil.

Chcete-li vše udělat, přidejte tento kód do MasterViewController. m.

- (prázdné) prepareForSegue: (UIStoryboardSegue *) segue odesílatel: (id) odesílatel {if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {DetailViewController * currentDetailViewController; pokud je [[self [splitViewController viewControllers lastObject] isKindOfClass: [UINavigationController class]]) currentDetailViewController = (DetailViewController *) ((selfUserViewController.viewControllers lastObject]). topViewController; else currentDetailViewController = [vlastní.splitViewController. viewControllers lastObject]; pokud (aktuálníDetailViewController. masterPopover Controller! = nil) [aktuálníDetailViewController. masterPopover Controller dismissPopoverAnimated: ANO]; DetailViewController * destinationDetailViewController; pokud je [[cílovéViewController je KindOfClass: [UINavigationController class]]) cílDetailViewController = (DetailViewController *) ((UINavigationController *) segue (cílViewController)). topViewController; jiný cílDetailViewController = segue. destinationViewController; já. splitViewController. delegate = destinationDetailViewCon troller; destinationDetailViewController. popOverButton = currentDetailViewController. popOverButton; destinationDetailViewController. masterPopoverController = currentDetailViewController. masterPopoverController;}}

Začnete tím, že najdete aktuální kontrolér detailního zobrazení, protože má tlačítko a vlastnosti, které nový kontrolér potřebuje.

Tento kód se zdá být komplikovanější než je. Nejprve zkontrolujte, zda běžíte na iPadu. Pokud ano, získáte aktuální kontrolér detailního zobrazení tím, že přistupujete k seznamu řadičů pohledu v poli viewController v systému splitViewController. Naštěstí třída UIViewController má vlastnost splitViewController, která vám to usnadní.

Poté zkontrolujte, zda je navigační radič umístěn v poli viewControllers a pokud tam máte, získáte topViewController navigačního ovladače (aktuální kontrolér zobrazení); Pokud tomu tak není, jednoduše použijete řadič v poli. (Uvidíte spoustu odlévání, které se děje tady)

pokud ([[self [splitViewController viewControllers & lastObject] 

jeKindOfClass: [UINavigationController & # x2028; AktuálníDetailViewController = (RTDetailViewController *)

(UINavigationController *)

[vlastní. splitViewController. viewControllers

lastObject]). topViewController; else

currentDetailViewController = & # x2028; [já. splitViewController. viewControllers

lastObject];

Dále, pokud uvidíte vyskakovací okno, chcete jej odmítnout. Zkontrolujete, jestli se jedná o prvotní řadič (proto jste museli zpřístupnit vlastnost přesunutím do souboru záhlaví.)

pokud (currentDetailViewController.masterPopoverController

! = Nil) 

[currentDetailViewController. MasterPopoverController > dismissPopoverAnimated: YES];

Nyní najdete nový cílový řadič (ten, který je převeden na) pomocí logiky podobné logice, kterou jste použili k nalezení aktuálního editoru Detail View

pokud ([segue targetViewController < (999)> iskindOfClass: [UINavigationController

class]]) DestinationDetailViewController =

(DetailViewController *) (UINavigationController *) 

Potom jednoduše nastavte delegáta Správa zobrazení rozděleného na nový kontrolér zobrazení, takže dostane splitViewController: willHideViewController: withBarButtonItem: forPopoverController: an d splitViewController: willShowViewController: invalidatingBarButtonItem: zprávy.

vlastní. splitViewController. delegate = cílDetailViewController;

Nakonec přiřadíte vlastnosti popOverButton a masterPopOverController v novém řadiči zobrazení.

cílDetailViewController. popOverButton =

aktuálníDetailViewController. popOverButton;

cílDetailViewController. masterPopoverController =

AktuálníDetailViewController. masterPopoverController;

Je pravda, že to právě odmítá vyskakování a přidělí vlastnosti, ale nic nezobrazuje, aby se zobrazilo tlačítko. To se skutečně provádí v pohleduDidLoad.

Také můžete zadat velikost vyskakovacího okna přiřazením hodnoty vlastnosti prefferedContentSize. Měli byste si být vědomi toho, že skutečná velikost může být snížena tak, aby se popover hodil na obrazovku a aby se popover nepokrýval klávesnici při prezentaci klávesnice. Můžete vidět kód, který to dělá v metodě MasterViewController awakeFromNib. 

- (prázdný) awakeFromNib {if ([[UIDevice currentDevice]

userInterfaceIdiom] ==UIUserInterfaceIdiomPad)

& # x2028; {já. clearsSelectionOnViewWillAppear = NE;

vlastní. PreferredContentSize = CGSizeMake

(320.0, 600.0);} [super awakeFromNib];}

Zpráva awakeFromNib je odeslána na objekt, který byl instancován ze scénáře storyboard po načtení a inicializaci všech objektů. Po odeslání zprávy byly nastaveny všechny její výstupní a akční připojení. 

Pokud se rozhodnete tuto radu ignorovat a neodpustíte ovladač, pak klepnutí mimo okna popupu způsobí odvolání. Můžete ovšem umožnit uživateli interakci s určenými pohledy a nepopírat popover pomocí vlastnosti passthroughViews (i když to zde nebudete dělat). Pak byste musel odmítnout sami sebe.

Jak přidat tlačítko Když je v aplikaci iOS nahrazen řadič zobrazení - figuríny

Výběr redakce

Vývojové rozdíly u dětí, které byste měli vědět pro zkoušku EMT - dummies

Vývojové rozdíly u dětí, které byste měli vědět pro zkoušku EMT - dummies

Znát vývojové rozdíly pro děti pro zkoušku EMT. Od doby, kdy se narodili, až do přechodu do dospělosti, se u dětí ukáže rychlý fyzický růst. Jak se zabývají svým prostředím a jiní lidé se také dramaticky mění. Děti mohou být rozděleny do následujících podskupin: Děti: Narození do 1 roku ...

Zkouška eMT: Připojení MOI a Force-dummies

Zkouška eMT: Připojení MOI a Force-dummies

EMT zkouška. Mechanismus zranění je popis síly, která může způsobit zranění. Pamatujete na Isaaca Newtona a jeho tři základní fyzikální zákony? Mohou to připadat komplikovaně, ale v traumatu jsou docela snadno pochopitelné. Řekněte, že někdo řídí ...

EMT zkouška: Jak se přizpůsobit k přizpůsobivému testování počítače - dummy

EMT zkouška: Jak se přizpůsobit k přizpůsobivému testování počítače - dummy

Předtím, než předvedl test na počítači, můžete očekávat, že to bude zastrašující. Nicméně CAT, jako je zkouška NREMT EMT, je navržena tak, aby byla uživatelsky přívětivá. Pomocí myši kliknete na různé obrazovky a vyberete odpovědi. A na začátku zkoušky se objevuje vzorek ...

Výběr redakce

10 Témat prozkoumat pro lepší skóre ASVAB - figuríny

10 Témat prozkoumat pro lepší skóre ASVAB - figuríny

Některé z vašich dovedností před tím, než přijmete ASVAB a maximalizujete skóre AFQT, možná budete potřebovat nebo chcete více práce v určité oblasti, nebo byste se možná chtěli dozvědět více o armádě nebo dokonce o celém ASVABu. Zde je několik míst, kde se dostanete navíc ...

10 Způsobů, jak rodiče mohou pomáhat dětem Studovat falešně AFQT

10 Způsobů, jak rodiče mohou pomáhat dětem Studovat falešně AFQT

Připojit se k americké armádě, budoucí vojáci musí získat přijatelné skóre na Armed Services Professional Aptitude Battery (jinak známý jako ASVAB), vojenská přijímací zkouška. ASVAB má devět oddělených sekcí, ale skóre AFQT (Kvalifikační testy ozbrojených sil) je vypočítáno s výsledky ze čtyř částí: Word Knowledge ...

V podskupinách matematiky ASVAB AFQT - figuríny

V podskupinách matematiky ASVAB AFQT - figuríny

Dva ze čtyř podtestů, které tvoří váš AFQT skóre jsou matematické testy. První, aritmetické úvahy, otestuje vaši schopnost používat matematiku k řešení různých problémů, se kterými se můžete setkat v reálném životě - jinými slovy matematické slovní problémy. Druhá znalost matematiky otestuje vaši schopnost řešit obecné matematické problémy. Zde ...

Výběr redakce

Jak upravit fotografie v aplikaci iPhoto - figuríny

Jak upravit fotografie v aplikaci iPhoto - figuríny

IPhoto obsahuje několik nástrojů pro úpravu obrázků, ve vašich obrázcích, například červené oči. Pomocí nástrojů pro úpravy můžete otáčet obrázky, retušovat fotografie nebo vylepšovat barvy, abyste získali to nejlepší. Prvním krokem v jakékoli editační úloze je vybrat požadovaný snímek ...

Jak otevřít dokument s existujícími stránkami v Mac Snow Leopard - dummies

Jak otevřít dokument s existujícími stránkami v Mac Snow Leopard - dummies

Aplikace Desktop Publishing. Existují dva způsoby, jak otevřít existující dokument Stránky. Vždy můžete otevřít dokument Stránky z okna Finder poklepáním na ikonu dokumentu. Můžete však také otevřít dokument Stránky v rámci programu. Postupujte takto:

Jak uspořádat vaše snímky iPhoto s klíčovými slovy - figuríny

Jak uspořádat vaše snímky iPhoto s klíčovými slovy - figuríny

Podle klíčového slova, což usnadňuje vyhledávání obrázků podle kategorií. K obrázkům můžete také přiřadit popisná klíčová slova, která vám pomohou uspořádat sbírku a rychle vyhledat určité obrázky. iPhoto je dodáván s řadou standardních klíčových slov a můžete si vytvořit vlastní ...