Soubory .xib v Xamarin.Macu

Tento článek popisuje práci se soubory .xib vytvořenými v aplikaci Xcode Interface Builder vytváření a udržování uživatelských rozhraní pro aplikaci Xamarin.Mac.

Poznámka

Preferovaný způsob, jak vytvořit uživatelské rozhraní pro aplikaci Xamarin.Mac, je pomocí scénářů. Tato dokumentace byla ponechána na místě z historických důvodů a pro práci se staršími projekty Xamarin.Mac. Další informace najdete v naší dokumentaci Úvod do scénářů.

Přehled

Při práci s C# a .NET v aplikaci Xamarin.Mac máte přístup ke stejným prvkům a nástrojům uživatelského rozhraní jako vývojář pracující v Objective-CObjective-C Vzhledem k tomu, že Xamarin.Mac se integruje přímo s Xcode, můžete použít Interface Builder Xcode k vytvoření a údržbě uživatelských rozhraní (nebo je volitelně vytvořit přímo v kódu jazyka C#).

Soubor .xib používá macOS k definování prvků uživatelského rozhraní vaší aplikace (jako jsou nabídky, Windows, zobrazení, popisky, textová pole), které se vytvářejí a udržují graficky v grafickém rozhraní Interface Builder.

Příklad spuštěné aplikace Příklad

V tomto článku probýme základy práce se soubory .xib v aplikaci Xamarin.Mac. Důrazně doporučujeme, abyste si nejprve prošli článek Hello, Mac, který se zabývá klíčovými koncepty a technikami, které budeme v tomto článku používat.

Možná se budete chtít podívat i na část dokumentu Exposing C# classes / methods to Objective-CExposing C# classes / methods to Objective-C která vysvětluje atributy a používané k připojení tříd jazyka C# k objektům a prvkům uživatelského RegisterExportObjective-C rozhraní.

Úvod do Xcode a Interface Builder

V rámci Xcode vytvořil Apple nástroj s názvem Interface Builder, který vám umožňuje vytvořit Uživatelské rozhraní v návrháři. Xamarin.Mac se plynule integruje s Interface Builder, což vám umožní vytvořit uživatelské rozhraní se stejnými nástroji jako Objective-C uživatelé.

Součásti Xcode

Když otevřete soubor .xib v Xcode z Visual Studio pro Mac, otevře se s navigátorem Project vlevo, hierarchií rozhraní a Editorem rozhraní uprostřed a s částí Nástroje vlastností vpravo:

Komponenty uživatelského rozhraní Xcode

Pojďme se podívat, co jednotlivé oddíly Xcode dělá a jak je použijete k vytvoření rozhraní pro aplikaci Xamarin.Mac.

Project navigace

Když otevřete soubor .xib pro úpravy v Xcode, Visual Studio pro Mac na pozadí vytvoří soubor projektu Xcode pro komunikaci změn mezi sebou a Xcode. Když později přepnete zpět na Visual Studio pro Mac z Xcode, všechny změny provedené v tomto projektu se synchronizují s projektem Xamarin.Mac pomocí Visual Studio pro Mac.

Oddíl Project Navigation umožňuje přecházet mezi všemi soubory, které tvoří tento projekt shim Xcode. Obvykle vás budou zajímat pouze soubory .xib v tomto seznamu, například MainMenu.xib a MainWindow.xib.

Hierarchie rozhraní

Oddíl Hierarchie rozhraní umožňuje snadný přístup k několika klíčovým vlastnostem rozhraní Uživatelské rozhraní, jako jsou zástupné symboly a hlavní okno. Tuto část můžete použít také pro přístup k jednotlivým prvkům (zobrazením), které tvoří vaše uživatelské rozhraní, a k úpravě způsobu jejich vnoření jejich přetažením v rámci hierarchie.

Editor rozhraní

Část Editor rozhraní poskytuje plochu, na které graficky rozložení Uživatelské rozhraní. Přetažením prvků z části Knihovna v části Nástroje vlastností vytvoříte svůj návrh. Když přidáváte prvky uživatelského rozhraní (zobrazení) na návrhovou plochu, přidají se do části Hierarchie rozhraní v pořadí, ve které se zobrazují v Editoru rozhraní.

Nástroje & pro vlastnosti

Část Properties Utilities (Nástroje vlastností) je rozdělená do dvou hlavních oddílů, se kterou budeme pracovat: Vlastnosti (také nazývané inspektory) a Knihovna:

Inspektor vlastností inspektoru

Zpočátku je tato část téměř prázdná, ale pokud vyberete prvek v editoru rozhraní nebo hierarchii rozhraní ,část Vlastnosti se naplní informacemi o daném prvku a vlastnostech, které můžete upravit.

V části Vlastnosti je 8 různých karet inspektoru, jak je znázorněno na následujícím obrázku:

Přehled všech inspektorů

Zleva doprava jsou tyto karty:

  • Inspektor souborů – Inspektor souborů zobrazuje informace o souboru, například název souboru a umístění upravovaných souborů Xib.
  • Rychlá nápověda – karta Rychlá nápověda poskytuje kontextovou nápovědu na základě toho, co je vybráno v Xcode.
  • Identity Inspector – Inspektor identit poskytuje informace o vybraném ovládacím prvku nebo zobrazení.
  • Inspektor atributů – Inspektor atributů umožňuje přizpůsobit různé atributy vybraného ovládacího prvku nebo zobrazení.
  • Inspektor velikostí – Inspektor velikosti umožňuje řídit velikost a chování při změny velikosti vybraného ovládacího prvku nebo zobrazení.
  • Inspektor připojení – inspektor připojení zobrazuje výstupní a akční připojení vybraných ovládacích prvků. Za chvíli prozkoumáme výstupy a akce.
  • Bindings Inspector – Nástroj Bindings Inspector umožňuje nakonfigurovat ovládací prvky tak, aby jejich hodnoty byly automaticky svázány s datovými modely.
  • Inspektor efektů zobrazení – Inspektor efektů zobrazení umožňuje určit vliv na ovládací prvky, jako jsou animace.

V části Knihovna najdete ovládací prvky a objekty, které se mají umístit do návrháře pro grafické vytvoření uživatelského rozhraní:

Příklad inspektoru knihovny

Teď, když jste se seznámili s prostředím IDE Xcode a Interface Builder, se podíváme na jeho použití k vytvoření uživatelského rozhraní.

Vytváření a údržba oken v Xcode

Preferovanou metodou pro vytvoření Uživatelské rozhraní aplikace Xamarin.Mac je použití scénářů (další informace najdete v naší dokumentaci Úvod do scénářů) a v důsledku toho budou všechny nové projekty, které v Xamarin.Macu začaly, používat scénáře ve výchozím nastavení.

Pokud chcete přepnout na používání uživatelského rozhraní založeného na .xib, proveďte následující:

  1. Otevřete Visual Studio pro Mac a spusťte nový projekt Xamarin.Mac.

  2. V Oblast řešeníklikněte pravým tlačítkem na projekt a vyberte Přidatnový soubor...

  3. Vyberte MacWindows Controller:

    Přidání nového kontroleru Windows

  4. Jako MainWindow název zadejte a klikněte na MainWindow Nový:

    Přidání nového hlavního okna

  5. Znovu klikněte pravým tlačítkem na projekt a vyberte Přidatnový soubor...

  6. Vyberte hlavnínabídku Macu:

    Přidání nové hlavní nabídky

  7. Ponechte název a MainMenu klikněte na MainMenu Nový.

  8. V Oblast řešení vyberte soubor Main.storyboard, klikněte pravým tlačítkem a vyberte Odebrat:

    Výběr hlavního scénáře

  9. V dialogovém okně Odebrat klikněte na tlačítko Odstranit:

    Potvrzení odstranění

  10. V Oblast řešenípoklikejte na soubor Info.plist a otevřete ho pro úpravy.

  11. V MainMenu rozevíracím MainMenu vyberte :

    Nastavení hlavní nabídky Nastavení

  12. V Oblast řešenípoklikejte na soubor MainMenu.xib a otevřete ho pro úpravy v souboru Interface Builder.

  13. V nástroji Library Inspectorzadejte do vyhledávacího pole a přetáhněte nový objekt na návrhovou plochu:

    Úprava hlavní nabídky Úprava

  14. V identity Inspectoru zadejte jako třídu:

    Výběr delegáta aplikace

  15. V hierarchii rozhraní vyberte Vlastník souboru,přepněte do inspektoru připojení a přetáhněte řádek z delegáta na objekt, který jste právě přidali do projektu:

    Připojení delegáta aplikace k

  16. Uložte změny a vraťte se do Visual Studio pro Mac.

Po provedení všech těchto změn upravte soubor AppDelegate.cs, aby vypadal takto:

using AppKit;
using Foundation;

namespace MacXib
{
    [Register ("AppDelegate")]
    public class AppDelegate : NSApplicationDelegate
    {
        public MainWindowController mainWindowController { get; set; }

        public AppDelegate ()
        {
        }

        public override void DidFinishLaunching (NSNotification notification)
        {
            // Insert code here to initialize your application
            mainWindowController = new MainWindowController ();
            mainWindowController.Window.MakeKeyAndOrderFront (this);
        }

        public override void WillTerminate (NSNotification notification)
        {
            // Insert code here to tear down your application
        }
    }
}

Hlavní okno aplikace je teď definované v souboru .xib, který se automaticky zahrne do projektu při přidávání kontroleru okna. Pokud chcete upravit návrh Windows, v Oblast řešenípoklikejte na soubor MainWindow.xib:

Výběr souboru MainWindow.xib

Tím se otevře návrh okna v souboru Interface Builder Xcode:

Úprava souboru MainWindow.xib

Standardní pracovní postup okna

Pro každé okno, které vytvoříte a budete s ním pracovat v aplikaci Xamarin.Mac, je proces v podstatě stejný:

  1. Pro nová okna, která nejsou automaticky přidána do projektu, přidejte do projektu novou definici okna.
  2. Dvojím kliknutím na soubor .xib otevřete návrh okna pro úpravy v souboru Interface Builder.
  3. V inspektoru atributů a v inspektoru velikosti nastavte všechny požadované vlastnosti okna.
  4. Přetáhněte ovládací prvky potřebné k sestavení rozhraní a nakonfigurujte je v nástroji Attribute Inspector.
  5. Ke zpracování velikosti prvků uživatelského rozhraní použijte Inspektor velikosti.
  6. Zpřístupňuje prvky uživatelského rozhraní okna kódu C# prostřednictvím výstupů a akcí.
  7. Uložte změny a přepněte zpět na Visual Studio pro Mac synchronizaci s Xcode.

Návrh rozložení okna

Proces rozložení objektu Uživatelské rozhraní ve Tvůrci rozhraní je v podstatě stejný pro každý prvek, který přidáte:

  1. V inspektoru knihovny vyhledejte požadovaný ovládací prvek, přetáhněte ho do Editoru rozhraní a umístěte ho.
  2. Nastavte všechny požadované vlastnosti okna v inspektoru atributů.
  3. Použijte inspektora velikosti pro zpracování změny velikosti prvků uživatelského rozhraní.
  4. Pokud používáte vlastní třídu, nastavte ji v inspektoru identity.
  5. Zveřejňujte prvky uživatelského rozhraní pro kód jazyka C# prostřednictvím výstupů a akcí.
  6. uložte své změny a přepněte zpět na Visual Studio pro Mac a synchronizujte se s Xcode.

Příklad:

  1. V Xcode přetáhněte tlačítko pro vložení z části Knihovna:

    Výběr tlačítka z knihovny

  2. Přetáhněte tlačítko na okno v editoru rozhraní:

    Přidání tlačítka do okna

  3. Klikněte na vlastnost title v inspektoru atributů a změňte název tlačítka na :

    Nastavení atributů tlačítek

  4. Přetáhněte popisek z části Knihovna:

    Výběr popisku v knihovně

  5. Přetáhněte popisek na okno vedle tlačítka v editoru rozhraní:

    Přidání popisku do okna

  6. Najeďte pravým táhlem popisku a přetáhněte ho, dokud není poblíž okraje okna:

    Změna velikosti popisku

  7. S popiskem stále vybraným v editoru rozhranípřepněte do nástroje pro kontrolu velikosti:

    Výběr funkce pro kontrolu velikosti

  8. V poli automatické změny velikosti klikněte na ostrou červenou hranatou závorku vpravo a v části střední červená vodorovná šipka uprostřed:

    Úprava vlastností automatické změnyvelikosti

  9. Tím se zajistí, že se popisek roztáhne do zvětšeného a zmenšeného velikosti okna v běžící aplikaci. Červené závorky a horní a levý okraj pole pro automatickou změnu určují, že popisek se zablokuje na příslušné umístění X a Y.

  10. Uložení změn do uživatelského rozhraní

Vzhledem k tomu, že jste změnili velikost a přesouváte ovládací prvky kolem, měli byste si všimnout, že Interface Builder vám poskytne užitečné pomocné pokyny pro modul snap-in, které jsou založené na pokynech pro rozhraní OS X Tyto pokyny vám pomůžou vytvořit vysoce kvalitní aplikace, které budou mít známý vzhled a chování pro uživatele Mac.

Pokud se podíváte na oddíl hierarchie rozhraní , Všimněte si, jak se zobrazuje rozložení a hierarchie prvků, které tvoří naše uživatelské rozhraní:

Výběr prvku v hierarchii rozhraní

Odsud můžete vybrat položky, které chcete upravit nebo změnit uspořádání prvků uživatelského rozhraní, pokud je to potřeba. Například pokud byl prvek uživatelského rozhraní pokryt jiným prvkem, můžete ho přetáhnout do dolní části seznamu a nastavit tak jeho položku v pravém horním rohu.

další informace o práci s Windows v aplikaci Xamarin. Mac najdete v dokumentaci k Windows .

Vystavení prvků uživatelského rozhraní pro kód jazyka C#

Jakmile dokončíte rozložení vzhledu a chování uživatelského rozhraní v Interface Builder, bude nutné vystavit prvky uživatelského rozhraní, aby k nim bylo možné přihlížet z kódu jazyka C#. K tomu budete používat akce a výstupy.

Nastavení vlastního řadiče hlavního okna

Aby bylo možné vytvořit akce a akce pro vystavení prvků uživatelského rozhraní v kódu jazyka C#, bude nutné, aby aplikace Xamarin. Mac používala vlastní kontroler oken.

Postupujte následovně:

  1. Otevřete scénář aplikace v Interface Builder Xcode.

  2. Vyberte NSWindowController v návrhová plocha.

  3. Přepněte do zobrazení inspektora identit a jako název třídyzadejte:

    Úprava názvu třídy

  4. uložte změny a vraťte se do Visual Studio pro Mac k synchronizaci.

  5. soubor WindowController. cs se přidá do projektu v Oblast řešení v Visual Studio pro Mac:

    nový název třídy v Visual Studio pro Mac

  6. Znovu otevřete scénář v Interface Builder Xcode.

  7. Soubor WindowController. h bude k dispozici pro použití:

    Vyhovující soubor. h v Xcode

Výstupy a akce

Co jsou tedy možnosti a akce? V tradičním programování uživatelského rozhraní rozhraní .NET je ovládací prvek v uživatelském rozhraní po přidání automaticky vystaven jako vlastnost. V Mac fungují jinak, pouhým přidáním ovládacího prvku do zobrazení ho nepůjde zpřístupnit pro kód. Vývojář musí explicitně zveřejnit prvek uživatelského rozhraní pro kód. V takovém případě Apple nabízí dvě možnosti:

  • Z-výstupy jsou podobné vlastnostem. Pokud ovládáte řízení do zásuvky, je zpřístupněno pro váš kód prostřednictvím vlastnosti, takže můžete provádět akce, jako je připojení obslužných rutin událostí, volání metod atd.
  • Akce – akce jsou analogické ke vzoru příkazu v subsystému WPF. Například když je provedena akce na ovládacím prvku, řekněme kliknutí na tlačítko, ovládací prvek automaticky zavolá metodu ve vašem kódu. Akce jsou výkonné a pohodlné, protože ke stejné akci můžete nastavovat mnoho ovládacích prvků.

V Xcode se nedají a akce přidávají přímo v kódu přes ovládací prvek – přetahování. Konkrétně to znamená, že pokud chcete vytvořit výstup nebo akci, můžete zvolit, který prvek ovládacího prvku chcete přidat zásuvku nebo akci, držet na klávesnici tlačítko řízení a přetáhnout tento ovládací prvek přímo do kódu.

Pro vývojáře Xamarin. Mac to znamená, že přetáhnete do Objective-C souborů zástupných procedur, které odpovídají souboru C#, ve kterém chcete vytvořit zásuvku nebo akci. Visual Studio pro Mac vytvořili soubor s názvem MainWindow. h jako součást projektu překrytí Xcode, který vygeneroval pro použití Interface Builder:

Příklad souboru. h v Xcode

Tento soubor stub. h zrcadlí MainWindow. Designer. cs , který se automaticky přidá do projektu Xamarin. Mac při vytvoření nového . Tento soubor se použije k synchronizaci změn provedených Interface Builder a je tam, kde vytvoříme vaše akce a akce, aby se prvky uživatelského rozhraní zobrazovaly v kódu C#.

Přidání zásuvky

Základní znalosti o tom, jaké akce a akce jsou, si podívejme na vytvoření zásuvky, která zpřístupňuje prvek uživatelského rozhraní pro kód jazyka C#.

Postupujte následovně:

  1. V Xcode v pravém horním rohu obrazovky klikněte na tlačítko dvojitý kroužek a otevřete Editor pomocníka:

    Výběr editorupomocníka pro

  2. Xcode se přepne na režim rozděleného zobrazení s editorem rozhraní na jedné straně a editoru kódu na druhé straně.

  3. Všimněte si, že Xcode automaticky vybral soubor MainWindowController. m v editoru kódu, který není správný. Pokud si pamatujete z naší diskuze o tom, jaké možnosti a akce jsou výše, musíme mít vybranou možnost MainWindow. h .

  4. V horní části editoru kódu klikněte na Automatický odkaz a vyberte soubor MainWindow. h :

    Vybírá se správný soubor. h,

  5. Xcode by teď měl mít vybraný správný soubor:

    Správný soubor vybraný

  6. Poslední krok byl velmi důležitý! Pokud nemáte vybraný správný soubor, nebudete moct vytvářet akce a akce, jinak se budou v C# vystavovat chybnou třídou.

  7. V editoru rozhranípodržte stisknutou klávesu Control na klávesnici a klikněte na přetáhnout popisek, který jsme vytvořili výše, do editoru kódu, který se nachází hned pod kódem:

    Dragging to create a new OutletVytvoření nového zásuvky přetažením vytvoření

  8. Zobrazí se dialogové okno. Nechejte připojení nastavené na zásuvky a zadejte název:

    Nastavení vlastností zásuvky

  9. pro vytvoření zásuvky klikněte na tlačítko Připojení :

    Dokončilijste vystavení .

  10. Uložte změny souboru.

Přidání akce

Teď se podíváme na vytvoření akce, která vystaví interakci uživatele s uživatelským ROZHRANÍm v kódu C#.

Postupujte následovně:

  1. Ujistěte se, že je stále v editoru pomocníka a soubor MainWindow. h je viditelný v editoru kódu.

  2. V editoru rozhranípodržte stisknutou klávesu Control na klávesnici a klikněte na tlačítko, které jsme vytvořili výše, a přetáhněte ho na Editor kódu hned pod kódem:

    Vytvoření akce přetažením

  3. Změňte typ připojení na akci:

    Vyberte typ akce .

  4. ClickedButtonJako ClickedButtonzadejte:

    Konfigurace akce

  5. klikněte na tlačítko Připojení pro vytvoření akce:

    The completed ActionDokončená byla .

  6. Uložte změny souboru.

díky kabelovému uživatelskému rozhraní a jeho zpřístupnění kódu v jazyce C# přepněte zpět na Visual Studio pro Mac a umožněte synchronizaci změn z Xcode a Interface Builder.

Zápis kódu

Když máte vytvořené uživatelské rozhraní a jeho prvky uživatelského rozhraní, které jsou zpřístupněny pro kód prostřednictvím možností a akcí, jste připraveni napsat kód, který umožní programu život. Například otevřete soubor MainWindow. cs pro úpravy tak, že na něj dvakrát kliknete v oblast řešení:

Soubor MainWindow. cssoubor

A přidejte následující kód do MainWindow třídy pro práci s ukázkovým výstupem, který jste vytvořili výše:

private int numberOfTimesClicked = 0;
...

public override void AwakeFromNib ()
{
    base.AwakeFromNib ();

    // Set the initial value for the label
    ClickedLabel.StringValue = "Button has not been clicked yet.";
}

Všimněte si, že v NSLabel jazyce C# je k dispozici přímý název, který jste přiřadili v Xcode při vytvoření jeho zásuvky v Xcode, v tomto případě se nazývá ClickedLabel . K libovolné metodě nebo vlastnosti vystaveného objektu můžete přistupovat stejným způsobem jako v případě normální třídy jazyka C#.

Důležité

Je nutné použít AwakeFromNib místo jiné metody, jako Initialize je například, protože AwakeFromNib je volána AwakeFromNib načtení operačního systému a vytvoření instance uživatelského rozhraní ze souboru. XIB. Pokud jste se pokusili získat přístup k ovládacímu prvku popisek před tím, než se soubor. xib kompletně načte a vytvoří se jeho instance, zobrazí se NullReferenceException Chyba, protože ovládací prvek popisek se ještě nevytvořil.

Dále do třídy přidejte následující částečnou třídu MainWindow :

partial void ClickedButton (Foundation.NSObject sender) {

    // Update counter and label
    ClickedLabel.StringValue = string.Format("The button has been clicked {0} time{1}.",++numberOfTimesClicked, (numberOfTimesClicked < 2) ? "" : "s");
}

Tento kód se připojí k akci, kterou jste vytvořili v Xcode a Interface Builder a bude volána vždy, když uživatel klikne na tlačítko.

Některé prvky uživatelského rozhraní automaticky mají předdefinované akce, například položky ve výchozím řádku nabídek, jako je například otevřít... Item ( ). V oblast řešenídvakrát klikněte na soubor AppDelegate. cs a otevřete ho pro úpravy a přidejte následující kód pod metodu:

[Export ("openDocument:")]
void OpenDialog (NSObject sender)
{
    var dlg = NSOpenPanel.OpenPanel;
    dlg.CanChooseFiles = false;
    dlg.CanChooseDirectories = true;

    if (dlg.RunModal () == 1) {
        var alert = new NSAlert () {
            AlertStyle = NSAlertStyle.Informational,
            InformativeText = "At this point we should do something with the folder that the user just selected in the Open File Dialog box...",
            MessageText = "Folder Selected"
        };
        alert.RunModal ();
    }
}

Klíč k tomuto klíči je [Export ("openDocument:")] , informuje NSMenu o tom, že [Export ("openDocument:")] má metodu void OpenDialog (NSObject sender) , která reaguje na openDocument: akci.

Další informace o práci s nabídkami najdete v dokumentaci k nabídkám .

Synchronizace změn pomocí Xcode

když přepnete zpátky na Visual Studio pro Mac z Xcode, všechny změny provedené v Xcode se automaticky synchronizují s vaším projektem Xamarin. Mac.

Pokud v oblast řešení vyberete MainWindow. Designer. cs , budete moct zjistit, jak naše odbytiště a akce jsou v našem kódu v jazyce C# kabelové:

Synchronizace změn pomocí Xcode

Všimněte si, jak tyto dvě definice v souboru MainWindow. Designer. cs :

[Outlet]
AppKit.NSTextField ClickedLabel { get; set; }

[Action ("ClickedButton:")]
partial void ClickedButton (Foundation.NSObject sender);

Zastavte si definice v souboru MainWindow. h v Xcode:

@property (assign) IBOutlet NSTextField *ClickedLabel;
- (IBAction)ClickedButton:(id)sender;

jak vidíte, Visual Studio pro Mac naslouchá změnám v souboru. h a poté automaticky synchronizuje tyto změny v příslušném souboru . designer. cs a zpřístupňuje je vaší aplikaci. můžete si také všimnout, že MainWindow. designer. cs je částečná třída, takže Visual Studio pro Mac nemusíte upravovat MainWindow. cs , které by přepsaly změny, které jsme provedli ve třídě.

Normálně nikdy nebudete muset otevřít MainWindow. Designer. cs sami, ale tady se prezentuje jenom pro účely vzdělávání.

Důležité

ve většině případů Visual Studio pro Mac automaticky uvidí všechny změny provedené v Xcode a synchronizuje je s vaším projektem Xamarin. Mac. v případě výskytu, ke kterému se synchronizace neprovádí automaticky, přepněte zpátky na Xcode a zpátky na Visual Studio pro Mac. Obvykle se spustí cyklus synchronizace.

Přidání nového okna do projektu

Kromě hlavního okna dokumentu může aplikace Xamarin. Mac vyžadovat zobrazení dalších typů oken uživateli, jako jsou předvolby nebo panely inspektora. Při přidávání nového okna do projektu byste měli vždy použít okno kakaa s možností kontroler , protože to usnadňuje proces načítání okna ze souboru. XIB.

Chcete-li přidat nové okno, postupujte následovně:

  1. V oblast řešeníklikněte pravým tlačítkem myši na projekt a vyberte možnost Přidatnový soubor...

  2. V dialogovém okně Nový soubor vyberte Xamarin. Mackakaové box s řadičem:

    Přidání nového kontroleru oken

  3. Jako PreferencesWindowPreferencesWindow zadejte a klikněte na tlačítko Nový .

  4. Dvojím kliknutím na soubor PreferencesWindow. xib ho otevřete pro úpravy v Interface Builder:

    Úprava okna v Xcode

  5. Navrhněte své rozhraní:

    Návrh rozložení Windows

  6. uložte změny a vraťte se do Visual Studio pro Mac pro synchronizaci s Xcode.

Přidejte následující kód do AppDelegate. cs pro zobrazení nového okna:

[Export("applicationPreferences:")]
void ShowPreferences (NSObject sender)
{
    var preferences = new PreferencesWindowController ();
    preferences.Window.MakeKeyAndOrderFront (this);
}

var preferences = new PreferencesWindowController ();Čára vytvoří novou instanci kontroleru oken, která načte okno ze souboru. xib a rozrovná ho. Na preferences.Window.MakeKeyAndOrderFront (this); řádku se zobrazí nové okno pro uživatele.

Pokud spustíte kód a vyberete Předvolby... v nabídce aplikace, zobrazí se okno:

Snímek obrazovky se zobrazí okno Předvolby v nabídce aplikace.

další informace o práci s Windows v aplikaci Xamarin. Mac najdete v dokumentaci k Windows .

Přidání nového zobrazení do projektu

Existují situace, kdy je jednodušší rozdělit návrh okna do několika, více spravovatelných souborů. XIB. Například například při vypínání obsahu hlavního okna při výběru položky panelu nástrojů v okně předvoleb nebo při odměně obsahu v reakci na výběr zdrojového seznamu .

Při přidávání nového zobrazení do projektu byste měli vždy použít možnost zobrazení kakaa s řadičem , protože to usnadňuje proces načítání zobrazení ze souboru. XIB.

Chcete-li přidat nové zobrazení, postupujte následovně:

  1. V oblast řešeníklikněte pravým tlačítkem myši na projekt a vyberte možnost Přidatnový soubor...

  2. V dialogovém okně Nový soubor vyberte Xamarin. Maczobrazení kakaa s kontrolérem:

    Přidání nového zobrazení zobrazení

  3. Jako SubviewTableSubviewTable zadejte a klikněte na tlačítko Nový .

  4. Dvakrát klikněte na soubor . xib podzobrazení a otevřete ho pro úpravy v Interface Builder a navrhněte uživatelské rozhraní:

    Návrh nového zobrazení v Xcode

  5. Vysílat všechny požadované akce a jejich výstupy.

  6. uložte změny a vraťte se do Visual Studio pro Mac pro synchronizaci s Xcode.

Dále upravte podzobrazení. cs a přidejte následující kód do souboru AwakeFromNib , abyste naplnili nové zobrazení při načtení:

public override void AwakeFromNib ()
{
    base.AwakeFromNib ();

    // Create the Product Table Data Source and populate it
    var DataSource = new ProductTableDataSource ();
    DataSource.Products.Add (new Product ("Xamarin.iOS", "Allows you to develop native iOS Applications in C#"));
    DataSource.Products.Add (new Product ("Xamarin.Android", "Allows you to develop native Android Applications in C#"));
    DataSource.Products.Add (new Product ("Xamarin.Mac", "Allows you to develop Mac native Applications in C#"));
    DataSource.Sort ("Title", true);

    // Populate the Product Table
    ProductTable.DataSource = DataSource;
    ProductTable.Delegate = new ProductTableDelegate (DataSource);

    // Auto select the first row
    ProductTable.SelectRow (0, false);
}

Přidejte do projektu výčet, abyste mohli sledovat, které zobrazení se aktuálně zobrazuje. Například SubviewType. cs:

public enum SubviewType
{
    None,
    TableView,
    OutlineView,
    ImageView
}

Upravte soubor. xib okna, který bude spotřebovávat zobrazení a zobrazí se. Přidejte vlastní zobrazení , které bude sloužit jako kontejner pro zobrazení, jakmile je načteno do paměti podle kódu jazyka C# a zveřejní na výstupu s názvem :

Vytváření požadované zásuvky

uložte změny a vraťte se do Visual Studio pro Mac pro synchronizaci s Xcode.

Dále upravte soubor. cs okna, ve kterém se bude zobrazovat nové zobrazení (například MainWindow. cs), a přidejte následující kód:

private SubviewType ViewType = SubviewType.None;
private NSViewController SubviewController = null;
private NSView Subview = null;
...

private void DisplaySubview(NSViewController controller, SubviewType type) {

    // Is this view already displayed?
    if (ViewType == type) return;

    // Is there a view already being displayed?
    if (Subview != null) {
        // Yes, remove it from the view
        Subview.RemoveFromSuperview ();

        // Release memory
        Subview = null;
        SubviewController = null;
    }

    // Save values
    ViewType = type;
    SubviewController = controller;
    Subview = controller.View;

    // Define frame and display
    Subview.Frame = new CGRect (0, 0, ViewContainer.Frame.Width, ViewContainer.Frame.Height);
    ViewContainer.AddSubview (Subview);
}

Když musíme zobrazit nové zobrazení načtené ze souboru. xib v kontejneru okna ( vlastní zobrazení je přidané výše), tento kód zpracovává odebrání všech existujících zobrazení a jejich odchodu pro nový. Vypadá to, že už máte zobrazené zobrazení, pokud ho odeberete z obrazovky. V dalším kroku se převezme zobrazení, které bylo předáno (načtené z kontroleru zobrazení), mění jeho velikost, aby se vešlo do oblasti obsahu, a přidá ho do obsahu pro zobrazení.

Chcete-li zobrazit nové zobrazení, použijte následující kód:

DisplaySubview(new SubviewTableController(), SubviewType.TableView);

Tím se vytvoří nová instance kontroleru zobrazení pro zobrazení nového zobrazení, nastaví jeho typ (jak je určeno výčtem přidaným do projektu) a použije DisplaySubview metodu přidanou do třídy okna pro zobrazení vlastního zobrazení. Například:

Snímek obrazovky znázorňující zobrazení tabulky vybrané v okně práce s obrázky.

další informace o práci s Windows v aplikaci Xamarin. Mac najdete v dokumentaci k Windows a dialogům .

Souhrn

V tomto článku se podrobně podíváme na práci se soubory. xib v aplikaci Xamarin. Mac. Zjistili jsme různé typy a použití souborů. xib k vytvoření uživatelského rozhraní vaší aplikace, jak vytvářet a udržovat soubory. xib v Xcode Interface Builder a jak pracovat se soubory. xib v kódu jazyka C#.