Standardní ovládací prvky v Xamarin. Mac

Tento článek popisuje práci se standardními Appkitu ovládacími prvky, jako jsou tlačítka, popisky, textová pole, zaškrtávací políčka a segmentované ovládací prvky v aplikaci Xamarin. Mac. Popisuje jejich přidání do rozhraní s Interface Builder a interakci s nimi v kódu.

Při práci s C# a .NET v aplikaci Xamarin. Mac máte přístup ke stejným Appkitu ovládacím prvkům, které vývojář pracuje v Objective-C a Objective-C . Protože se Xamarin. Mac integruje přímo s Xcode, můžete použít Interface Builder Xcode k vytváření a údržbě ovládacích prvků appkitu (nebo je případně můžete vytvořit přímo v kódu C#).

Ovládací prvky Appkitu jsou prvky uživatelského rozhraní, které slouží k vytvoření uživatelského rozhraní vaší aplikace Xamarin. Mac. Skládají se z prvků, jako jsou tlačítka, popisky, textová pole, zaškrtávací políčka a segmentované ovládací prvky, které způsobují okamžité akce nebo viditelné výsledky, pokud je uživatel pracuje s nimi.

Ukázková hlavní obrazovka aplikace

V tomto článku se seznámíte se základy práce s ovládacími prvky Appkitu v aplikaci Xamarin. Mac. Důrazně doporučujeme, abyste nejprve pracovali v článku Hello, Mac , konkrétně v částech Úvod k Xcode a Interface Builder a akcím a akcím , které se týkají klíčových konceptů a technik, které v tomto článku budeme používat.

Můžete se podívat i na část dokumentu s dalšími Exposing C# classes / methods to Objective-CExposing C# classes / methods to Objective-C a vysvětluje RegisterExport příkazy a používané k navýšení tříd jazyka C# do Objective-C objektů a prvků uživatelského rozhraní.

Úvod k ovládacím prvkům a zobrazením

macOS (dříve označované jako Mac OS X) poskytuje standardní sadu ovládacích prvků uživatelského rozhraní prostřednictvím architektury Appkitu. Skládají se z prvků, jako jsou tlačítka, popisky, textová pole, zaškrtávací políčka a segmentované ovládací prvky, které způsobují okamžité akce nebo viditelné výsledky, pokud je uživatel pracuje s nimi.

Všechny ovládací prvky Appkitu mají standardní, vestavěný vzhled, který bude vhodný pro většinu použití, některé určují alternativní vzhled pro použití v oblasti rámce okna nebo v kontextu efektu živosti , jako je například v oblasti postranního panelu nebo v widgetu centra oznámení.

Apple při práci s ovládacími prvky Appkitu doporučujeme následující pokyny:

  • Vyhněte se kombinování velikostí ovládacích prvků ve stejném zobrazení.
  • Obecně se vyhnete změně velikosti ovládacích prvků svisle.
  • Použijte systémové písmo a správnou velikost textu v ovládacím prvku.
  • Použijte správné mezery mezi ovládacími prvky.

Další informace najdete v části informace o ovládacích prvcích a zobrazeních v pokynech k rozhraní Apple OS X v operačním systému.

Používání ovládacích prvků v rámečku okna

Existuje podmnožina Appkitu ovládacích prvků, které obsahují styl zobrazení, který umožňuje zahrnutí do oblasti rámce okna. Příklad najdete na panelu nástrojů poštovní aplikace:

Rám okna Mac

  • Tlačítko s zaobleným texturou – a se stylem NSTexturedRoundedBezelStyle .
  • Rozdělené rozdělené ovládací prvky s texturou a se stylem NSSegmentStyleTexturedRounded .
  • Rozdělené rozdělené ovládací prvky s texturou a se stylem NSSegmentStyleSeparated .
  • Kulatá nabídka pro Pop-Up s texturou – a se stylem NSTexturedRoundedBezelStyle .
  • Kulatá nabídka pro Drop-Down s texturou – a se stylem NSTexturedRoundedBezelStyle .
  • Panel hledání – A .

Při práci s ovládacími prvky Appkitu v rámečku okna doporučujeme Apple navrhovat následující pokyny:

  • V těle okna nepoužívejte styly ovládacích prvků pro rám okna.
  • V rámci okna nelze použít ovládací prvky nebo styly v těle okna.

Další informace najdete v části informace o ovládacích prvcích a zobrazeních v pokynech k rozhraní Apple OS X v operačním systému.

Vytvoření uživatelského rozhraní v Interface Builder

Když vytvoříte novou aplikaci Xamarin. Mac kakaa, ve výchozím nastavení se zobrazí standardní prázdné okno. Tato okna jsou definována v souboru, který je .storyboard automaticky zahrnutý v projektu. Chcete-li upravit návrh systému Windows, v Průzkumník řešenídvakrát klikněte na soubor:

Výběr hlavního scénáře v Průzkumník řešení

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

Úprava scénáře v Xcode

Chcete-li vytvořit uživatelské rozhraní, přetáhněte prvky uživatelského rozhraní (ovládací prvky Appkitu) z inspektoru knihovny do editoru rozhraní v Interface Builder. V následujícím příkladu byl svislý ovládací prvek rozděleného zobrazení drogou od kontrolora knihovny a umístěn do okna v editoru rozhraní:

Výběr rozděleného zobrazení z knihovny

Další informace o vytváření uživatelského rozhraní v Interface Builder najdete v našem úvodu k dokumentaci k Xcode a Interface Builder .

Určení velikosti a umístění

Po zahrnutí ovládacího prvku do uživatelského rozhraní použijte Editor omezení a nastavte jeho polohu a velikost tak, že zadáte hodnoty ručně a nastavíte, jak je ovládací prvek automaticky umístěn a má velikost při změně velikosti nadřazeného okna nebo zobrazení:

Nastavení omezení

Pokud chcete ovládací prvek umístit na dané umístění (x, y), použijte červené I svislé ohraničení kolem vnějšího pole pro změnu velikosti . Například:

Úprava omezení

Určuje, že vybraný ovládací prvek (v editoru rozhranízobrazení hierarchie) bude zablokovaný do horního a pravého umístění okna nebo zobrazení, když se změní jeho velikost nebo přesunutí.

Další prvky vlastností ovládacího prvku editor, jako je výška a Šířka:

Nastavení výšky

Zarovnání prvků s omezeními můžete také řídit pomocí editoru zarovnání:

Editor zarovnání

Důležité

Na rozdíl od iOS, kde (0, 0) je levý horní roh obrazovky, v macOS (0, 0) je spodní levý roh. Důvodem je to, že macOS používá matematickou souřadnicový systém s číselnými hodnotami, které zvyšují hodnotu směrem nahoru a vpravo. Tento postup je potřeba vzít v úvahu při umísťování ovládacích prvků Appkitu do uživatelského rozhraní.

Nastavení vlastní třídy

Existují časy při práci s ovládacími prvky Appkitu, které budete muset podtřídit a stávající ovládací prvek a vytvořit vlastní vlastní verzi této třídy. Například definujte vlastní verzi zdrojového seznamu:

using System;
using AppKit;
using Foundation;

namespace AppKit
{
    [Register("SourceListView")]
    public class SourceListView : NSOutlineView
    {
        #region Computed Properties
        public SourceListDataSource Data {
            get {return (SourceListDataSource)this.DataSource; }
        }
        #endregion

        #region Constructors
        public SourceListView ()
        {

        }

        public SourceListView (IntPtr handle) : base(handle)
        {

        }

        public SourceListView (NSCoder coder) : base(coder)
        {

        }

        public SourceListView (NSObjectFlag t) : base(t)
        {

        }
        #endregion

        #region Override Methods
        public override void AwakeFromNib ()
        {
            base.AwakeFromNib ();

        }
        #endregion

        #region Public Methods
        public void Initialize() {

            // Initialize this instance
            this.DataSource = new SourceListDataSource (this);
            this.Delegate = new SourceListDelegate (this);

        }

        public void AddItem(SourceListItem item) {
            if (Data != null) {
                Data.Items.Add (item);
            }
        }
        #endregion

        #region Events
        public delegate void ItemSelectedDelegate(SourceListItem item);
        public event ItemSelectedDelegate ItemSelected;

        internal void RaiseItemSelected(SourceListItem item) {
            // Inform caller
            if (this.ItemSelected != null) {
                this.ItemSelected (item);
            }
        }
        #endregion
    }
}

Kde [Register("SourceListView")] instrukce zpřístupňuje SourceListView třídu Objective-C tak, že se dá použít v Interface Builder. Další informace naleznete v Exposing C# classes / methods to Objective-C části dokumentu o Exposing C# classes / methods to Objective-C , vysvětluje RegisterExport příkazy a používané k drátování tříd jazyka C# do Objective-C objektů a prvků uživatelského rozhraní.

S výše uvedeným kódem můžete přetáhnout ovládací prvek Appkitu základního typu, který rozšiřujete, na návrhovou plochu (v níže uvedeném příkladu),přepnout na inspektor identity a nastavit vlastní třídu na název, který jste vystavili (příklad ):

Nastavení vlastní třídy v Xcode

Vystavení odbytišť a akcí

Předtím, než bude k ovládacímu prvku Appkitu přístup v kódu jazyka C#, je nutné ho zveřejnit buď jako zásuvku , nebo jako akci. Pokud to chcete provést, vyberte daný ovládací prvek buď v hierarchii rozhraní , nebo v editoru rozhraní a přepněte do zobrazení pomocníka (Ujistěte se, že máte okno vybrané pro úpravy):

Výběr správného souboru pro úpravy

Ovládací prvek – přetažením z ovládacího prvku Appkitu do .h souboru pro zahájení vytváření .h nebo Akce:

Vytvoření zásuvky nebo akce přetažením

Vyberte typ expozice, která se má vytvořit, a pro výstup nebo akci zadejte název:

Konfigurace výstupu nebo akce

Další informace o práci sakcemi a akceminajdete v části Moje Možnosti a akce v úvodu k dokumentaci k Xcode a Interface Builder .

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 Průzkumník řešení vyberete možnost, uvidíte, SplitViewController.designer.cs jak se vaše zásuvka a Akce rozšířily v našem kódu jazyka C#: SplitViewController.designer.cs

Synchronizace změn pomocí Xcode

Všimněte si, jak definice v SplitViewController.designer.cs souboru:

[Outlet]
AppKit.NSSplitViewItem LeftController { get; set; }

[Outlet]
AppKit.NSSplitViewItem RightController { get; set; }

[Outlet]
AppKit.NSSplitView SplitView { get; set; }

Zaúsečka s definicí v MainWindow.h souboru v Xcode:

@interface SplitViewController : NSSplitViewController {
    NSSplitViewItem *_LeftController;
    NSSplitViewItem *_RightController;
    NSSplitView *_SplitView;
}

@property (nonatomic, retain) IBOutlet NSSplitViewItem *LeftController;

@property (nonatomic, retain) IBOutlet NSSplitViewItem *RightController;

@property (nonatomic, retain) IBOutlet NSSplitView *SplitView;

jak vidíte, Visual Studio pro Mac naslouchá změnám .h v souboru a potom je automaticky synchronizuje v příslušném .designer.cs souboru, aby je zveřejnila do vaší aplikace. můžete také všimnout, že SplitViewController.designer.cs se jedná o částečnou třídu, aby Visual Studio pro Mac nemusela upravovat, SplitViewController.cs která by přepsala všechny změny, které jsme provedli ve třídě.

Normálně se nikdy nebudete muset otevřít SplitViewController.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.

Práce s tlačítky

Appkitu nabízí několik typů tlačítek, které lze použít v návrhu uživatelského rozhraní. Další informace najdete v části tlačítka v tématu základní informace o rozhraních systému Apple OS X.

Příklad různých typů tlačítek

Pokud bylo tlačítko vystaveno prostřednictvím zásuvky, následující kód bude reagovat na jeho stisknutí:

ButtonOutlet.Activated += (sender, e) => {
        FeedbackLabel.StringValue = "Button Outlet Pressed";
};

U tlačítek, která byla vystavena prostřednictvím akcí, se automaticky vytvoří metoda pro vás s názvem, který jste zvolili v Xcode. Chcete-li reagovat na akci, dokončete částečnou metodu ve třídě, na které byla Akce definována. Například:

partial void ButtonAction (Foundation.NSObject sender) {
    // Do something in response to the Action
    FeedbackLabel.StringValue = "Button Action Pressed";
}

U tlačítek se stavem (například On a Off)je možné stav zkontrolovat nebo nastavit vlastností proti výčtu. Například:

DisclosureButton.Activated += (sender, e) => {
    LorumIpsum.Hidden = (DisclosureButton.State == NSCellStateValue.On);
};

Kde NSCellStateValue může být:

  • On – tlačítko se stiskne nebo je vybraný ovládací prvek (například zaškrtnutí políčka).
  • Vypnuto – tlačítko není natlačené nebo není vybraný ovládací prvek.
  • Smíšená – kombinace stavů On a Off.

Označení tlačítka jako výchozího a nastavení ekvivalentu klíče

U libovolného tlačítka, které jste přidali do návrhu uživatelského rozhraní, můžete toto tlačítko označit jako výchozí tlačítko, které se aktivuje, když uživatel stiskne klávesu Return/Enter na klávesnici. V systému macOS toto tlačítko ve výchozím nastavení obdrží modrou barvu pozadí.

Pokud chcete nastavit tlačítko jako výchozí, vyberte ho na Interface Builder Xcode. Dále v inspektoru atributůvyberte pole Key Equivalent (Ekvivalentní klíč) a stiskněte klávesu Return/Enter:

Úprava ekvivalentu klíče

Stejně tak můžete přiřadit libovolnou posloupnost kláves, kterou můžete použít k aktivaci tlačítka pomocí klávesnice místo myši. Například stisknutím kláves Command-C na obrázku výše.

Když je aplikace spuštěná a okno s tlačítkem Key (Tlačítko) je Key (Klávesa) a Focused (Zaostřené). Pokud uživatel stiskne Command-C, aktivuje se akce tlačítka (jako kdyby uživatel klikl na tlačítko).

Práce se zaškrtávacími políčky a přepínači

AppKit poskytuje několik typů zaškrtávacích políček a skupin přepínačů, které můžete použít v Uživatelské rozhraní Design. Další informace najdete v části Tlačítka v pokynech pro lidské rozhraní OS X společnostiApple.

Příklad dostupných typů zaškrtávacích políček

Zaškrtávací políčka a přepínačů (vystavených prostřednictvím výstupů) mají stav (například On (Zap) a Off(Vypnuto), který se může ve výčtu zaškrtnout nebo nastavit vlastností . Například:

AdjustTime.Activated += (sender, e) => {
    FeedbackLabel.StringValue = string.Format("Adjust Time: {0}",AdjustTime.State == NSCellStateValue.On);
};

Kde NSCellStateValue může být:

  • On – tlačítko se stiskne nebo je vybraný ovládací prvek (například zaškrtnutí políčka).
  • Vypnuto – tlačítko není natlačené nebo není vybraný ovládací prvek.
  • Smíšená – kombinace stavů On a Off.

Pokud chcete vybrat tlačítko ve skupině přepínačů, vystavte přepínač, který se má vybrat jako výstup, a nastavte jeho vlastnost. Příklad:

partial void SelectCar (Foundation.NSObject sender) {
    TransportationCar.State = NSCellStateValue.On;
    FeedbackLabel.StringValue = "Car Selected";
}

Pokud chcete získat kolekci přepínačů, které mají fungovat jako skupina a automaticky zpracovat vybraný stav, vytvořte novou akci a připojte k ní každé tlačítko ve skupině:

Vytvoření nové akce

Dále přiřaďte každému přepínači v inspektoru atributů jedinečný TagTag

Úprava značky přepínačů

Uložte změny a vraťte se Visual Studio pro Mac, přidejte kód pro zpracování akce, ke které jsou připojena všechna přepínačová tlačítka:

partial void NumberChanged(Foundation.NSObject sender)
{
    var check = sender as NSButton;
    Console.WriteLine("Changed to {0}", check.Tag);
}

Vlastnost můžete použít Tag k zobrazení vybraného přepínače.

Práce s ovládacími prvky nabídky

AppKit poskytuje několik typů ovládacích prvků nabídek, které je možné použít v Uživatelské rozhraní Design. Další informace najdete v části Ovládací prvky nabídek v pokynech společnosti Apple pro OS X pro lidské rozhraní.

Příklady ovládacích prvků nabídky

Poskytování dat ovládacího prvku nabídky

Ovládací prvky nabídek dostupné pro macOS je možné nastavit k naplnění rozevíracího seznamu buď z interního seznamu (který je možné předem definovat v Interface Builder nebo naplnit kódem), nebo poskytnutím vlastního vlastního externího zdroje dat.

Práce s interními daty

Kromě definování položek v Interface Builder poskytují ovládací prvky nabídky (například ) úplnou sadu metod, které umožňují přidat, upravit nebo odstranit položky z interního seznamu, který NSComboBox udržují:

  • Add – Přidá novou položku na konec seznamu.
  • GetItem – Vrátí položku na daném indexu.
  • Insert – Vloží novou položku do seznamu v daném umístění.
  • IndexOf – Vrátí index dané položky.
  • Remove – Odebere danou položku ze seznamu.
  • RemoveAll – Odebere všechny položky ze seznamu.
  • RemoveAt – Odebere položku v daném indexu.
  • Count – Vrátí počet položek v seznamu.

Důležité

Pokud používáte externí zdroj dat ( ), vyvolá volání kterékoli z výše uvedených metod UsesDataSource = true výjimku.

Práce s externím zdrojem dat

Místo použití integrovaných interních dat k poskytování řádků pro ovládací prvek nabídky můžete volitelně použít externí zdroj dat a pro položky (například databázi SQLite) zadat vlastní zálohovací úložiště.

Pokud chcete pracovat s externím zdrojem dat, vytvoříte instanci zdroje dat ovládacího prvku nabídky (například) a přepíšete několik metod pro poskytnutí NSComboBoxDataSource potřebných dat:

  • ItemCount – Vrátí počet položek v seznamu.
  • ObjectValueForItem – Vrátí hodnotu položky pro daný index.
  • IndexOfItem – Vrátí index pro zadanou hodnotu položky.
  • CompletedString – Vrátí první odpovídající hodnotu položky pro částečně typovou hodnotu položky. Tato metoda se volá jenom v případě, že je povolené automatické dokončování ( Completes = true ).

Další podrobnosti najdete v části Databáze a pole se seznamem v dokumentu Práce s databázemi.

Úprava vzhledu seznamu

Pro úpravu vzhledu ovládacího prvku nabídky jsou k dispozici následující metody:

  • HasVerticalScroller – Pokud true je , zobrazí ovládací prvek svislý posuvník.
  • VisibleItems – Upraví počet položek zobrazených při otevření ovládacího prvku. Výchozí hodnota je pět (5).
  • IntercellSpacing – Upravte velikost místa kolem dané položky tak, že zadáte , kde určuje levý a pravý okraj a určuje mezeru před a NSSizeWidth za Height položkou.
  • ItemHeight – Určuje výšku každé položky v seznamu.

Pro Drop-Down typů NSPopupButtons , první položka nabídky obsahuje název ovládacího prvku. Příklad:

Příklad ovládacího prvku nabídky

Pokud chcete změnit název, vystavte tuto položku jako výstup a použijte kód jako v následujícím příkladu:

DropDownSelected.Title = "Item 1";

Manipulace s vybranými položkami

Následující metody a vlastnosti umožňují manipulaci s vybranými položkami v seznamu ovládacího prvku nabídky:

  • SelectItem – Vybere položku v daném indexu.
  • Select – Vyberte hodnotu dané položky.
  • DeselectItem – Zruší výběr položky v daném indexu.
  • SelectedIndex – Vrátí index aktuálně vybrané položky.
  • SelectedValue – Vrátí hodnotu aktuálně vybrané položky.

Pomocí můžete položku prezentovat v daném indexu v horní části seznamu a posunout se k seznamu, dokud položka v daném ScrollItemAtIndexToTopScrollItemAtIndexToVisible indexu není viditelná.

Reakce na události

Ovládací prvky nabídky poskytují následující události, které reagují na interakci uživatele:

  • SelectionChanged – Volá se, když uživatel vybere hodnotu ze seznamu.
  • SelectionIsChanging – Volá se předtím, než se nová položka vybraná uživatelem stane aktivním výběrem.
  • WillPopup - Volá se před zobrazením rozevíracího seznamu položek.
  • WillDismiss - Volá se před zavřením rozevíracího seznamu položek.

U ovládacích prvků zahrnují všechny stejné události jako , například událost, která se volá vždy, když uživatel upraví hodnotu textu v NSComboBoxNSTextField poli se Changed seznamem.

Volitelně můžete reagovat na výběr interních položek nabídky dat definovaných v souboru Interface Builder připojením položky k akci Interface Builder pomocí následujícího kódu reagovat na akci aktivované uživatelem:

partial void ItemOne (Foundation.NSObject sender) {
    DropDownSelected.Title = "Item 1";
    FeedbackLabel.StringValue = "Item One Selected";
}

Další informace o práci s nabídkami a ovládacími prvky nabídek najdete v naší dokumentaci k nabídkám a automaticky otevíra Pull-Down seznamem.

Práce s ovládacími prvky výběru

AppKit poskytuje několik typů ovládacích prvků výběru, které je možné použít v Uživatelské rozhraní Design. Další informace najdete v části Ovládací prvky výběru v pokynech pro lidské rozhraní OS X společnostiApple.

Příklad ovládacích prvků výběru

Existují dva způsoby, jak sledovat, kdy ovládací prvek výběru obsahuje interakci uživatele, a to tak, že ho vystavíte jako akci. Například:

partial void SegmentButtonPressed (Foundation.NSObject sender) {
    FeedbackLabel.StringValue = string.Format("Button {0} Pressed",SegmentButtons.SelectedSegment);
}

Nebo připojením delegáta k události. Například:

TickedSlider.Activated += (sender, e) => {
    FeedbackLabel.StringValue = string.Format("Stepper Value: {0:###}",TickedSlider.IntValue);
};

Pokud chcete nastavit nebo číst hodnotu ovládacího prvku výběru, použijte IntValue vlastnost . Například:

FeedbackLabel.StringValue = string.Format("Stepper Value: {0:###}",TickedSlider.IntValue);

Speciální ovládací prvky (například Color Well a Image Well) mají specifické vlastnosti pro jejich typy hodnot. Příklad:

ColorWell.Color = NSColor.Red;
ImageWell.Image = NSImage.ImageNamed ("tag.png");

NSDatePicker následující vlastnosti pro práci přímo s datem a časem:

  • DateValue – aktuální hodnota data a času jako .
  • Místní – umístění uživatele jako .
  • TimeInterval – hodnota času jako .
  • TimeZone – časové pásmo uživatele jako .

Práce s ovládacími prvky indikátoru

AppKit poskytuje několik typů ovládacích prvků indikátoru, které je možné použít v Uživatelské rozhraní Design. Další informace najdete v části Ovládací prvky indikátorů v pokynech pro lidské rozhraní OS X společnostiApple.

Příklad ovládacích prvků indikátoru

Existují dva způsoby, jak sledovat, kdy ovládací prvek indikátoru obsahuje interakci uživatele, a to buď tak, že ho vystavíte jako akci nebo výstup a připojíte k události delegáta. Například:

LevelIndicator.Activated += (sender, e) => {
    FeedbackLabel.StringValue = string.Format("Level: {0:###}",LevelIndicator.DoubleValue);
};

Ke čtení nebo nastavení hodnoty ovládacího prvku indikátoru použijte DoubleValue vlastnost . Například:

FeedbackLabel.StringValue = string.Format("Rating: {0:###}",Rating.DoubleValue);

Při zobrazení by se měly animovat neurčité a asynchronní indikátory průběhu. Pomocí metody StartAnimation spusťte animaci, když se zobrazí. Například:

Indeterminate.StartAnimation (this);
AsyncProgress.StartAnimation (this);

Volání metody StopAnimation zastaví animaci.

Práce s ovládacími prvky textu

AppKit poskytuje několik typů textových ovládacích prvků, které je možné použít v Uživatelské rozhraní Design. Další informace najdete v části Textové ovládací prvky v pokynech pro lidské rozhraní OS X společnostiApple.

Příklady textových ovládacích prvků

U textových polí ( ) je možné ke sledování interakce uživatelů NSTextField použít následující události:

  • Změněno – je aktivováno pokaždé, když uživatel změní hodnotu pole. Například pro každý typ znaku.
  • EditingBe the – funkce se aktivuje, když uživatel vybere pole pro úpravy.
  • EditingEnded – když uživatel stiskne klávesu Enter v poli nebo opustí pole.

Ke čtení nebo nastavení hodnoty pole použijte StringValue vlastnost . Například:

FeedbackLabel.StringValue = string.Format("User ID: {0}",UserField.StringValue);

Pro pole, která zobrazují nebo upravovat číselné hodnoty, můžete použít IntValue vlastnost . Například:

FeedbackLabel.StringValue = string.Format("Number: {0}",NumberField.IntValue);

Poskytuje NSTextView plnohodnotnou oblast pro úpravy a zobrazení textu s integrovaným formátováním. Podobně NSTextField jako u použijte StringValue vlastnost ke čtení nebo nastavení hodnoty oblasti.

Příklad složitého příkladu práce se zobrazeními textu v aplikaci Xamarin.Mac najdete v ukázkové aplikaci SourceWriter. SourceWriter je jednoduchý editor zdrojového kódu, který poskytuje podporu pro dokončování kódu a jednoduché zvýraznění syntaxe.

Kód SourceWriter byl plně okomentován a (pokud je k dispozici) jsou k dispozici odkazy na klíčové technologie nebo metody na relevantní informace v dokumentaci příručky Xamarin.Mac.

Práce se zobrazeními obsahu

AppKit poskytuje několik typů zobrazení obsahu, které je možné použít ve vašem Uživatelské rozhraní Design. Další informace najdete v části Zobrazení obsahu v pokynech pro lidské rozhraní OS X společnostiApple.

Příklad zobrazení obsahu

Překryvné okna

Překryvný prvek je přechodný prvek uživatelského rozhraní, který poskytuje funkce, které přímo souvisejí s konkrétním ovládacím prvkem nebo oblastí na obrazovce. Nad oknem, které obsahuje ovládací prvek nebo oblast, se kterou souvisí, se překryvné desetinné čárky a jeho ohraničení obsahuje šipku, která označuje bod, ze kterého se objevil.

Pokud chcete vytvořit překryvné okno, proveďte následující:

  1. Poklikáním v okně, do kterého chcete přidat překryvné okno, .storyboard.storyboard

  2. Přetáhněte kontroler zobrazení z inspektoru knihovny do editoru rozhraní:

    Výběr kontroleru zobrazení z knihovny

  3. Definujte velikost a rozložení vlastního zobrazení:

    Úprava rozložení

  4. Klikněte na ovládací prvek a přetáhněte ho ze zdroje automaticky otevíraného okna na kontroler zobrazení:

    Přetažením vytvořte segádu.

  5. V místní nabídce vyberte Překryvné okno:

    Nastavení typu se dosa

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

Zobrazení karet

Zobrazení karet se skládá ze seznamu karet (který vypadá podobně jako segmentovaný ovládací prvek) v kombinaci se sadami zobrazení, která se nazývají podokna. Když uživatel vybere novou kartu, zobrazí se podokno, které je k němu připojené. Každé podokno obsahuje vlastní sadu ovládacích prvků.

Při práci se zobrazením tabulátoru v Interface Builder Xcode nastavte počet karet pomocí inspektoru atributů:

Úprava počtu karet

Výběrem jednotlivých karet v hierarchii rozhraní nastavte její Název a přidejte prvky uživatelského rozhraní do jeho podokna:

Úpravy karet v Xcode

Ovládací prvky AppKit pro datové vazby

Pomocí technik Key-Value kódování a datových vazeb v aplikaci Xamarin.Mac můžete výrazně snížit množství kódu, který musíte napsat a udržovat, abyste mohli naplnit prvky uživatelského rozhraní a pracovat s těmito prvky. Výhodou je také další oddělení zálohovací dat ( datovýmodel) od front-endového Uživatelské rozhraní (model-zobrazení-kontroler),což vede k jednodušší údržbě a flexibilnějšímu návrhu aplikací.

Key-Value Code (KVC) je mechanismus pro nepřímou přístup k vlastnostem objektu pomocí klíčů (speciálně formátovaných řetězců) k identifikaci vlastností místo přístupu k nim prostřednictvím proměnných instance nebo metod přistupující metody ( get/set ). Implementací přistupovacích Key-Value, které dodržují předpisy, v aplikaci Xamarin.Mac získáte přístup k dalším funkcím macOS, jako jsou Key-Value Observing (KVO), datové vazby, základní data, vazby Cocoa a skriptovatelnost.

Další informace najdete v části Jednoduchá datová vazba naší dokumentace k datovým vazbách a Key-Value kódování.

Souhrn

Tento článek podrobně popisuje práci se standardními ovládacími prvky AppKit, jako jsou tlačítka, popisky, textová pole, zaškrtávací políčka a segmentované ovládací prvky v aplikaci Xamarin.Mac. Pokryli jsme jejich přidání do návrhu Uživatelské rozhraní v Xcode Interface Builder, jejich vystavení kódu prostřednictvím výstupů a akcí a práci s ovládacími prvky AppKit v C# Code.