Xamarin. Mac içindeki. XIB dosyaları

Bu makalede, bir Xamarin. Mac uygulaması için Kullanıcı arabirimleri oluşturmak ve sürdürmek üzere Xcode 'un Interface Builder içinde oluşturulan. XIB dosyalarıyla çalışma ele alınmaktadır.

Not

Xamarin. Mac uygulaması için Kullanıcı arabirimi oluşturmak için tercih edilen yol film şeritleri kullanmaktır. Bu belge, geçmiş nedenlerle ve eski Xamarin. Mac projeleriyle çalışmaya yönelik olarak bırakıldı. Daha fazla bilgi için bkz. görsel taslak belgelerine giriş .

Genel Bakış

Xamarin. Mac uygulamasında C# ve .NET ile çalışırken, Objective-C ve Objective-C üzerinde çalışan bir geliştiricinin kullandığı aynı kullanıcı arabirimi öğelerine ve araçlarına erişebilirsiniz. Xamarin. Mac doğrudan Xcode ile tümleştiğinden, Kullanıcı arabirimlerinizi oluşturmak ve korumak için Xcode 'un Interface Builder kullanabilirsiniz (ya da isteğe bağlı olarak bunları doğrudan C# kodunda oluşturabilirsiniz).

. xıb dosyası, macos tarafından, (menüler, Windows, görünümler, etiketler, metin alanları gibi), xcode 'un Interface Builder grafik olarak oluşturulup korunan öğelerini tanımlamak için kullanılır.

An example of the running appÇalışan uygulamaya örneği

Bu makalede, bir Xamarin. Mac uygulamasında. XIB dosyalarıyla çalışmanın temelleri ele alınacaktır. Bu makalede kullanacağınız temel kavramları ve teknikleri kapsadığından, ilk olarak Hello, Mac makalesi üzerinden çalışmanız önerilir.

Exposing C# classes / methods to Objective-CExposing C# classes / methods to Objective-C belgesinin bölümüne de göz atmak Isteyebilirsiniz, RegisterExport C# sınıflarınızı Objective-C nesneler ve Kullanıcı Arabirimi öğelerine bağlamak için kullanılan ve özniteliklerini açıklar.

Xcode ve Interface Builder giriş

Xcode 'un bir parçası olarak, Apple, Kullanıcı arabiriminizi bir tasarımcıda görsel olarak oluşturmanıza olanak sağlayan Interface Builder adlı bir araç oluşturmuştur. Xamarin. Mac, Interface Builder ile tümleşerek, kullanıcıların yapabilmesine olanak tanıyan Kullanıcı arabiriminizi oluşturmanızı sağlar Objective-C .

Xcode bileşenleri

Mac için Visual Studio 'den xıb dosyası açtığınızda, sol taraftaki bir Project gezgin , ortadaki arabirim hiyerarşisi ve arabirim düzenleyicisi ve sağdaki bir özellikler yardımcı programları bölümü açılır:

The components of the Xcode UIXcode Kullanıcı bileşenler

Bu Xcode bölümlerinin her birinin ne yaptığını ve Xamarin. Mac uygulamanız için arabirim oluşturmak üzere bunları nasıl kullanacağınızı inceleyelim.

Project gezintisi

xcode 'da düzenlenmek üzere bir. xıb dosyası açtığınızda Mac için Visual Studio, arka planda bir xcode proje dosyası oluşturarak, değişiklikleri kendisi ve xcode arasında iletişim kurar. daha sonra, xcode 'dan Mac için Visual Studio 'a geri döndüğünüzde, bu projede yapılan tüm değişiklikler Mac için Visual Studio göre Xamarin. Mac projenizle eşitlenir.

Project gezinti bölümü, bu dolgu xcode projesini oluşturan tüm dosyalar arasında gezinmeniz sağlar. Genellikle, bu listede MainMenu. XIB ve MainWindow. XIBgibi yalnızca. XIB dosyalarını ilgilenirsiniz.

Arabirim hiyerarşisi

Arabirim hiyerarşisi bölümü, Kullanıcı arabiriminin yer tutucuları ve ana penceresigibi çeşitli anahtar özelliklerine kolayca erişmenizi sağlar. Bu bölümü Ayrıca, Kullanıcı arabiriminizi oluşturan tek tek öğelere (görünümler) erişmek ve bunları hiyerarşi içinde sürükleyerek iç içe yerleştikleri şekilde ayarlamak için de kullanabilirsiniz.

Arabirim Düzenleyicisi

Arabirim Düzenleyicisi bölümü, Kullanıcı arabiriminizi grafiksel olarak düzenettiğiniz yüzeyi sağlar. Tasarımınızı oluşturmak için Özellikler yardımcı programları bölümünün kitaplık bölümünden öğeleri sürükleyin. Tasarım yüzeyine Kullanıcı arabirimi öğeleri (görünümler) eklerken, bunlar arabirim düzenleyicisindegöründükleri sırada arabirim hiyerarşisi bölümüne eklenir.

Özellikler & yardımcı programları

Özellikler yardımcı programları bölümü ile çalışdığımız iki ana bölüm, Özellikler (Inspectors olarak da bilinir) ve kitaplık:

The Property InspectorÖzellik

Başlangıçta bu bölüm neredeyse boştur, ancak arabirim düzenleyicisinde veya arabirim hiyerarşisindebir öğe seçerseniz Özellikler bölümü, ayarlayabileceğiniz verilen öğe ve özellikler hakkındaki bilgilerle doldurulur.

Özellikler bölümünde, aşağıdaki çizimde gösterildiği gibi 8 farklı Inspector sekmesivardır:

Tüm genel bakış

Soldan sağa doğru, bu sekmeler şunlardır:

  • Dosya denetçisi – dosya denetçisi, düzenlenmekte olan XIB dosyasının dosya adı ve konumu gibi dosya bilgilerini gösterir.
  • Hızlı yardım – hızlı yardım sekmesi, Xcode 'da seçildiklere göre bağlamsal yardım sağlar.
  • Kimlik denetçisi – kimlik denetçisi, seçilen Denetim/görünüm hakkında bilgi sağlar.
  • Öznitelik denetçisi – öznitelikler denetçisi, seçili denetimin/görünümün çeşitli özniteliklerini özelleştirmenizi sağlar.
  • Boyut denetçisi : boyut denetçisi, seçili denetimin/görünümün boyutunu ve yeniden boyutlandırma davranışını denetlemenize olanak tanır.
  • Bağlantı denetçisi – bağlantı denetçisi, seçili denetimlerin çıkış ve eylem bağlantılarını gösterir. Yalnızca birkaç dakika içinde, aykırı Izin ve eylemleri inceleyeceğiz.
  • Bağlama denetçisi – bağlama denetçisi, değerlerini otomatik olarak veri modellerine bağlanacak şekilde yapılandırmanıza olanak tanır.
  • Efekt denetçisini görüntüleme – görünüm efektleri denetçisi, denetimler üzerinde animasyonlar gibi etkileri belirtmenize olanak tanır.

Kitaplık bölümünde, Kullanıcı arabiriminizi grafiksel olarak oluşturmak için tasarımcıya yerleştirilecek denetimleri ve nesneleri bulabilirsiniz:

An example of the Library InspectorKitaplık denetçisi örneğine bir örnek

Artık Xcode IDE ve Interface Builder hakkında bilgi sahibi olduğunuza göre, bir kullanıcı arabirimi oluşturmak için bunu kullanmaya bakalım.

Xcode 'da Windows oluşturma ve sürdürme

Xamarin. Mac uygulamasının Kullanıcı arabirimini oluşturmak için tercih edilen yöntem, görsel taslaklara sahiptir (daha fazla bilgi için görsel taslak belgelerine giriş yaptığımızı inceleyin) ve sonuç olarak, Xamarin. Mac ' de başlatılan yeni bir proje film şeritleri varsayılan olarak kullanır.

. XIB tabanlı kullanıcı arabirimini kullanmaya geçiş yapmak için aşağıdakileri yapın:

  1. Mac için Visual Studio açın ve yeni bir Xamarin. Mac projesi başlatın.

  2. Çözüm bölmesiprojeye sağ tıklayıp yeni dosya Ekle... seçeneğini belirleyin.

  3. MacWindows denetleyicisiniseçin:

    Adding a new Window ControllerYeni bir pencere ekleniyor

  4. MainWindowAd için girin ve MainWindow düğmesine tıklayın:

    Adding a new Main WindowYeni ana pencere ekleme yeni

  5. Projeye tekrar sağ tıklayın ve yeni dosya Ekle... seçeneğini belirleyin.

  6. Macana menüsüseçin:

    Adding a new Main MenuYeni ekleme yeni ana

  7. Adı olarak bırakın MainMenu ve MainMenu düğmesine tıklayın.

  8. Çözüm bölmesiana. görsel taslak dosyasını seçin, sağ tıklayın ve Kaldır' ı seçin:

    Selecting the main storyboardAna görsel taslağı ana görsel taslağı

  9. Kaldır Iletişim kutusunda Sil düğmesine tıklayın:

    Confirming the deletionSilmeyi

  10. Çözüm bölmesi, bu dosyayı düzenlenmek üzere açmak için Info. plist dosyasına çift tıklayın.

  11. MainMenuMainMenu açılan listesinden seçin:

    Setting the main menuAnamenü ayarı

  12. Çözüm bölmesi, MainMenu. XIB dosyasına çift tıklayarak Xcode 'un Interface Builder düzenlenmek üzere açın.

  13. Kitaplık denetçisinde, Ara alanına yazın ve ardından yeni bir nesneyi tasarım yüzeyine sürükleyin:

    Editing the main menuAna

  14. Kimlik denetçisinde, sınıfiçin girin:

    Selecting the App DelegateUygulama temsilcisini

  15. Arabirim hiyerarşisindenDosya sahibini seçin, bağlantı denetçisine geçin ve temsilcideki bir çizgiyi projeye yeni eklenen nesneye sürükleyin:

    Connecting the App DelegateUygulama

  16. değişiklikleri kaydedin ve Mac için Visual Studio geri dönün.

Tüm bu değişiklikler yerinde, Appdelegate. cs dosyasını düzenleyin ve aşağıdaki gibi görünmesini sağlayın:

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
        }
    }
}

Artık uygulamanın ana penceresi, bir pencere denetleyicisi eklenirken projeye otomatik olarak eklenen bir . XIB dosyasında tanımlanmıştır. Windows tasarımınızı düzenlemek için, çözüm bölmesiMainWindow. XIB dosyasına çift tıklayın:

Selecting the MainWindow.xib fileMainWindow.

Bu, Xcode 'un Interface Builder pencere tasarımını açar:

MainWindow. XIB 'Yi düzenleyen.

Standart pencere iş akışı

Oluşturduğunuz ve Xamarin. Mac uygulamanızda birlikte çalıştığınız herhangi bir pencere için, işlem temelde aynıdır:

  1. Projenize otomatik olarak eklenen varsayılan olmayan yeni pencereler için projeye yeni bir pencere tanımı ekleyin.
  2. . XIB dosyasına çift tıklayarak Xcode 'un Interface Builder düzenlenmek üzere pencere tasarımını açın.
  3. Öznitelik denetçisinde ve Boyut denetçisindegerekli tüm pencere özelliklerini ayarlayın.
  4. Arabiriminizi derlemek ve öznitelik denetçisindeyapılandırmak için gereken denetimleri sürükleyin.
  5. Kullanıcı arabirimi öğelerinize yönelik yeniden boyutlandırmayı işlemek için Boyut denetçisini kullanın.
  6. Pencere Kullanıcı arabirimi öğelerini, dış izin ve eylemler aracılığıyla C# kodu olarak kullanıma sunun.
  7. değişikliklerinizi kaydedin ve xcode ile eşitlemek için Mac için Visual Studio geri dönün.

Pencere düzeni tasarlama

Arabirim Oluşturucu 'da bir kullanıcı arabirimini yerleştirme işlemi, eklediğiniz her öğe için temelde aynıdır:

  1. Kitaplık denetçisinde istenen denetimi bulun ve arabirim düzenleyicisine sürükleyin ve konumlandırın.
  2. Öznitelik Denetçisi'nin tüm gerekli pencere özelliklerini ayarlayın.
  3. Kullanıcı arabirimi öğeleriniz için yeniden boyutlandırmayı işlemek üzere Boyut Denetçisi'ne bakın.
  4. Özel bir sınıf kullanıyorsanız, bunu Identity Inspector içinde ayarlayın.
  5. Çıkışlar ve eylemler aracılığıyla kullanıcı arabirimi öğelerini C# kodunda ortaya çıkarma.
  6. Değişikliklerinizi kaydedin ve Xcode ile eşitlemek Mac için Visual Studio geri dönüp geçiş yapın.

Örneğin:

  1. Xcode'da Kitaplık Bölümünden bir Push Düğmesi sürükleyin:

    Kitaplık'tan düğme seçme

  2. Düğmeyi Arabirim Düzenleyicisi'ndePencere'ye bırakın:

    Pencereye düğme ekleme

  3. Öznitelik Denetçisi'ninTitle özelliğine tıklayın ve düğmenin başlığını olarak ayarlayın:

    Düğme özniteliklerini ayarlama

  4. Kitaplık Bölümünden bir Etiket sürükleyin:

    Kitaplıkta etiket seçme Kitaplıkta

  5. Etiketi Arabirim Düzenleyicisi'nde düğmesinin yanındaki Pencereye bırakın:

    Pencereye etiket ekleme

  6. Etiketin sağ tutamacına tutun ve pencerenin kenarına yakın olana kadar sürükleyin:

    Etiketi yeniden boyutlandırma Etiketi

  7. Etiket Arabirim Düzenleyicisi'nde seçiliyken BoyutDenetçisi'ne geçiş:

    Boyut Denetçisi'nin Seçerek

  8. Otomatik Boyutlandırma Kutusunda, sağ DimRed Bracket'a ve ortada Dim Red Horizontal Arrow'a tıklayın:

    Otomatik boyutlandırma özelliklerini düzenleme

  9. Bu, çalışan uygulamada pencere yeniden boyutlandırıldıkçe etiketin büyümesi ve küçülmesini sağlar. Kırmızı Köşeli Ayraçlar ve OtomatikLeştirme Kutusu kutusunun üst ve sol kısmında etiketin verilen X ve Y konumlarına takılmış olması gerekir.

  10. Değişikliklerinizi Kullanıcı Arabirimi

Denetimleri yeniden boyutlandırmaya ve taşımaya devam ederken, Interface Builder OS X İnsan Arabirimi Yönergelerini temel alan yararlı anlık ipuçları verdiğine dikkat etmişsinizdir. Bu yönergeler, Mac kullanıcıları için tanıdık bir görünüme sahip olacak yüksek kaliteli uygulamalar oluşturmanıza yardımcı olur.

Arabirim Hiyerarşisi bölümüne bakarsanız, kullanıcı Arabirimimizi hangi öğelerin düzeninin ve hiyerarşisinin gösterildiğine dikkat edin:

Arabirim Hiyerarşisinde öğe seçme

Gerekirse ui öğelerini yeniden sıralamak için buradan düzenlemek veya sürüklemek istediğiniz öğeleri kullanabilirsiniz. Örneğin, bir kullanıcı arabirimi öğesi başka bir öğenin kapsamında yer alıyorsa, penceredeki en üst öğe yapmak için bunu listenin en altına sürükleyebilirsiniz.

Xamarin.Mac uygulamasında Windows hakkında daha fazla bilgi için lütfen Windows bakın.

Kullanıcı arabirimi öğelerini C# koduna ifşa ediyor

Interface Builder'da kullanıcı arabiriminizin görünüm ve hislerini ortaya çıkarmanızı tamamladikten sonra, C# kodundan erişilmeleri için kullanıcı arabiriminin öğelerini ortaya çıkarmanız gerekir. Bunu yapmak için eylemleri ve çıkışları kullanılasabilirsiniz.

Özel bir ana pencere denetleyicisi ayarlama

Kullanıcı arabirimi öğelerini C# kodunda ortaya çıkarmak için Çıkışlar ve Eylemler oluşturabilecek olan Xamarin.Mac uygulamasının Özel Pencere Denetleyicisi kullanıyor olması gerekir.

Şunları yapın:

  1. Xcode'un çalışma Interface Builder.

  2. Dosyanın NSWindowController içinde öğesini Tasarım Yüzeyi.

  3. Kimlik Denetçisi görünümüne geçiş ve Sınıf Adı olarak girin:

    Sınıf adını düzenleme

  4. Değişikliklerinizi kaydedin ve eşitlemek Mac için Visual Studio geri dön.

  5. Aşağıdakiler içinde yer alan projenize bir WindowController.csÇözüm Bölmesi Mac için Visual Studio:

    içinde yeni sınıf adı Mac için Visual StudioYeni sınıf adı

  6. Xcode'un çalışma Interface Builder.

  7. WindowController.h dosyası kullanılabilir:

    Xcode'da eşleşen .h dosyası

Çıkışlar ve eylemler

Peki çıkışlar ve eylemler nedir? Geleneksel .NET Kullanıcı Arabirimi programlamada, Kullanıcı Arabirimi bir denetim ekleniyorsa otomatik olarak özellik olarak ortaya çıkar. Mac'te işler Mac'te farklı şekilde çalışır, yalnızca bir görünüme denetim eklemek, denetimin kod için erişilebilir olmasını sağlar. Geliştiricinin kullanıcı arabirimi öğesini kodda açıkça ortaya çıkarması gerekir. Bunu yapmak için Apple bize iki seçenek sunar:

  • Çıkışlar– Çıkışlar özelliklere benzer. Bir denetimi bir Çıkışa bağlamanız durumunda, olay işleyicileri ekleme, üzerinde yöntemleri çağırma gibi şeyleri yapmak için kodunuz bir özelliği aracılığıyla açığa çıkar.
  • Actions : Eylemler, WPF'de komut deseniyle benzerdir. Örneğin, bir denetimde (örneğin, düğme tıklaması) bir Eylem gerçekleştirıldığında denetim, kodunda otomatik olarak bir yöntem çağıracaktır. Eylemler güçlü ve kullanışlıdır çünkü aynı Eyleme birçok denetim havale edersiniz.

Xcode'da, çıkışlar ve eylemler Denetim sürükleme yoluyla doğrudan koda eklenir. Daha belirgin olarak, bir çıkış veya eylem oluşturmak için, hangi denetim öğesini eklemek istediğinize bir çıkış veya eylem eklemeniz, klavyedeki Denetim düğmesini basılı tutmanız ve bu denetimi doğrudan kodunuz içine sürüklemeniz anlamına gelir.

Xamarin.Mac geliştiricileri için bu, çıkış veya eylemi oluşturmak istediğiniz C# dosyasına karşılık gelen saplama dosyalarına Objective-C sürüklendiği anlamına gelir. Mac için Visual Studio kullanmak için oluşturduğu shim Xcode projesinin bir parçası olarak MainWindow.h adlı bir dosya Interface Builder:

Xcode'da .h dosyası örneği Xcode'da

Bu saplama .h dosyası, yeni bir oluşturulduğunda bir Xamarin.Mac projesine otomatik olarak eklenen MainWindow.designer.cs dosyasını yansıtıyor. Bu dosya, Interface Builder tarafından yapılan değişiklikleri eşitlemek için kullanılır ve kullanıcı arabirimi öğelerinin C# koduna açık olması için çıkışlarınızı ve eylemlerinizi burada oluşturuz.

Çıkış ekleme

Çıkışların ve eylemlerin ne olduğu hakkında temel bir anlayışa sahip olarak, C# kodunuz için kullanıcı arabirimi öğesini ortaya çıkarmak için bir çıkış oluşturmaya bakalım.

Şunları yapın:

  1. Ekranın sağ üst köşesindeki Xcode'da Çift Daire düğmesine tıklayarak Yardımcı Düzenleyici'yi açın:

    Yardımcı Düzenleyicisi'ni seçme

  2. Xcode bir tarafta Arabirim Düzenleyicisi, diğer tarafta da Kod Düzenleyicisi ile bölünmüş görünüm moduna geçer.

  3. Xcode'un Kod Düzenleyicisi'nde MainWindowController.m dosyasını otomatik olarak seçtiğineve bunun yanlış olduğuna dikkat edin. Yukarıdaki çıkışlar ve eylemlerle ilgili tartışmamızda mainWindow.h'nin seçili olduğunu hatırlayın.

  4. Kod Düzenleyicisi'nin üst kısmında Otomatik Bağlantı'ya tıklayın ve MainWindow.h dosyasını seçin:

    Doğru .h dosyasını seçme

  5. Xcode'da artık doğru dosya seçili olmalı:

    Doğru dosya seçildi Doğru

  6. Son adım çok önemliydi! Doğru dosya seçilmezse çıkışlar ve eylemler oluşturamazsınız, yoksa bunlar C# ile yanlış sınıfa açık olur!

  7. Arabirim Düzenleyicisi'ndeklavyede Denetim tuşunu basılı tutun ve yukarıda oluşturduğumız etikete tıklar ve kodun hemen altındaki kod düzenleyicisine sürükleyin:

    Yeni bir Çıkış oluşturmak için Çıkış oluşturmak için Sürükleme

  8. Bir iletişim kutusu görüntülenir. Bağlantı'nın çıkış olarak ayarlanmış şekilde bırakın ve Ad için girin:

    Çıkış özelliklerini ayarlama

  9. Bağlan düğmesine tıklayarak çıkış oluşturun:

    Tamamlanmış Çıkış Tamamlanmış

  10. Dosyadaki değişiklikleri kaydedin.

Eylem ekleme

Şimdi C# kodunuz için kullanıcı arabirimi öğesiyle kullanıcı etkileşimini ortaya çıkarmak için bir eylem oluşturmaya bakalım.

Şunları yapın:

  1. Hala Yardımcı Düzenleyicisi'nde olduğundan veMainWindow.h dosyasının Kod Düzenleyicisi'nde görünür olduğundan emin olun.

  2. Arabirim Düzenleyicisi'ndeklavyede Denetim tuşunu basılı tutun ve yukarıda oluşturduğum düğmeyi kodun hemen altındaki kod düzenleyicisine sürükleyin:

    Eylem oluşturmak için Sürükleme

  3. Bağlantı türünü eylem olarak değiştirme:

    Eylem türü seçin

  4. Ad ClickedButton olarak ClickedButton

    Eylemi Yapılandırma

  5. Eylem oluşturmak Bağlan düğmesine tıklayın:

    Tamamlanan eylem

  6. Dosyadaki değişiklikleri kaydedin.

kullanıcı arabiriminiz kablolu ve C# koduna sunulan, Mac için Visual Studio geri dönün ve değişiklikleri xcode ve Interface Builder eşitlemesine izin verin.

Kodu yazma

Kullanıcı arabiriminiz ve ve eylemleri aracılığıyla koda açık Kullanıcı arabirimi öğeleri ile, programınızı hayata geçirin. Örneğin, çözüm bölmesiMainWindow. cs dosyasını düzenlenmek üzere çift tıklayarak açın:

The MainWindow.cs fileMainWindow dosyası

Ve MainWindow yukarıda oluşturduğunuz örnek priz ile çalışmak için sınıfına aşağıdaki kodu ekleyin:

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.";
}

Xcode 'da NSLabel Çıkış oluşturduğunuzda Xcode 'da atadığınız doğrudan ad tarafından C# ' a erişildiğine, bu durumda çağırılır ClickedLabel . Sunulan nesnenin herhangi bir yöntemine veya özelliğine, herhangi bir normal C# sınıfı olacak şekilde erişebilirsiniz.

Önemli

, Gibi AwakeFromNib başka bir yöntem yerine kullanmanız gerekir Initialize , çünkü AwakeFromNib işletim sistemi AwakeFromNib çağrılır ve. XIB dosyasından Kullanıcı arabirimini örneklenmiştir. . XIB dosyası tam olarak yüklenmeden ve örneği oluşturulmadan önce etiket denetimine erişmeye çalıştıysanız, NullReferenceException etiket denetimi henüz oluşturulamadığından bir hata alırsınız.

Ardından, aşağıdaki kısmi sınıfı MainWindow sınıfına ekleyin:

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");
}

Bu kod, Xcode ve Interface Builder içinde oluşturduğunuz eyleme iliştirir ve kullanıcının düğmeye tıkladığı her seferinde çağrılacaktır.

Bazı Kullanıcı arabirimi öğeleri otomatik olarak yerleşik eylemlere sahiptir, örneğin, Aç... menü öğesi () gibi varsayılan menü çubuğundaki öğeler . Çözüm bölmesi, appdelegate. cs dosyasına çift tıklayarak onu düzenleyebilirsiniz ve yönteminin altına aşağıdaki kodu ekleyin :

[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 ();
    }
}

Buradaki anahtar satırı, [Export ("openDocument:")]NSMenu[Export ("openDocument:")] 'in void OpenDialog (NSObject sender) eyleme yanıt veren bir yönteme sahip olduğunu söyler openDocument: .

Menülerle çalışma hakkında daha fazla bilgi için lütfen menüler belgelerimize bakın.

Değişiklikleri Xcode ile eşitleme

xcode 'dan Mac için Visual Studio 'a geri döndüğünüzde, xcode 'da yaptığınız tüm değişiklikler otomatik olarak Xamarin. Mac projenizle eşitlenir.

Çözüm bölmesiMainWindow. Designer. cs ' yi seçerseniz, çıkış ve Eylemizin C# kodumuza nasıl bağlanacağını görebileceksiniz:

Synchronizing Changes with XcodeXcode değişiklikleri eşitleme Xcode ile

MainWindow. Designer. cs dosyasındaki iki tanım olduğunu fark edin:

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

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

Xcode 'da MainWindow. h dosyasındaki tanımlarla birlikte satır:

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

görebileceğiniz gibi,. h dosyasında yapılan değişiklikleri dinler Mac için Visual Studio ve ardından ilgili . designer. cs dosyasındaki bu değişiklikleri uygulamanıza sunmak üzere otomatik olarak eşitler. ayrıca, mainwindow. designer. cs ' nin kısmi bir sınıf olduğunu fark edebilirsiniz. bu sayede Mac için Visual Studio, sınıf üzerinde yaptığımız tüm değişikliklerin üzerine yazılacak mainwindow. cs 'yi değiştirmek zorunda değildir.

Normalde, MainWindow. Designer. cs 'yi kendiniz açmanız gerekmez, burada yalnızca eğitim amaçlarıyla sunulmuştur.

Önemli

çoğu durumda Mac için Visual Studio, xcode 'da yapılan değişiklikleri otomatik olarak görür ve bunları Xamarin. Mac projeniz ile eşitler. eşitlemenin otomatik olarak gerçekleşmediğini devre dışı bırakmak için, tekrar tekrar Mac için Visual Studio tekrar tekrar tekrar edin. Bu, normalde bir eşitleme döngüsünü devre dışı bırakır.

Projeye yeni bir pencere ekleme

Ana belge penceresinden bir Xamarin. Mac uygulamasının, Kullanıcı için Tercihler veya Inspector paneli gibi diğer pencere türlerini görüntülemesi gerekebilir. Projenize yeni bir pencere eklerken, her zaman denetleyici seçeneğiyle birlikte COA penceresini kullanmanız gerekir, çünkü bu, pencereyi. XIB dosyasından yükleme işlemini kolaylaştırır.

Yeni bir pencere eklemek için aşağıdakileri yapın:

  1. Çözüm bölmesiprojeye sağ tıklayıp yeni dosya Ekle... seçeneğini belirleyin.

  2. Yeni dosya iletişim kutusunda denetleyici ile Xamarin. MacCocoa penceresiniseçin:

    Adding an new Window ControllerYeni bir pencere ekleniyor

  3. PreferencesWindowPreferencesWindow Için girin ve Yeni düğmesine tıklayın.

  4. Interface Builder içinde düzenlenmek üzere açmak için Preferenceswindow. XIB dosyasına çift tıklayın:

    Editing the window in XcodeXcode 'da pencereyi düzenleyen pencereyi

  5. Arabiriminizi tasarlama:

    Designing the windows layoutWindows

  6. değişikliklerinizi kaydedin ve xcode ile eşitlemek için Mac için Visual Studio geri dönün.

Yeni pencerenizi göstermek için Appdelegate. cs ' ye aşağıdaki kodu ekleyin:

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

Satır, pencereyi var preferences = new PreferencesWindowController (); . XIB dosyasından yükleyen ve bu dosyayı flalayan yeni bir pencere denetleyicisi örneği oluşturur. preferences.Window.MakeKeyAndOrderFront (this);Satır, kullanıcıya yeni pencereyi görüntüler.

Kodu çalıştırır ve uygulama menüsündetercihleri... seçeneğini belirlerseniz pencere görüntülenir:

Ekran görüntüsü, uygulama menüsünden gösterilen Tercihler penceresini gösterir.

Xamarin. Mac uygulamasında Windows ile çalışma hakkında daha fazla bilgi için lütfen Windows belgelerimize bakın.

Projeye yeni bir görünüm ekleme

Pencerenin tasarımını birkaç, daha yönetilebilir. XIB dosyasına bölmek daha kolay olan zamanlar. Örneğin, bir Tercihler penceresinde bir araç çubuğu öğesi seçerken veya Içeriği bir kaynak listesi seçimine yanıt olarak değiştirirken ana pencerenin içeriğini değiştirme gibi.

Projenize yeni bir görünüm eklerken, bu, görünümü. XIB dosyasından yükleme işlemini daha kolay hale getiren denetleyici seçeneğiyle birlikte COA görünümünü her zaman kullanmanız gerekir.

Yeni bir görünüm eklemek için aşağıdakileri yapın:

  1. Çözüm bölmesiprojeye sağ tıklayıp yeni dosya Ekle... seçeneğini belirleyin.

  2. Yeni dosya iletişim kutusunda denetleyici ile Xamarin. MacCocoa görünümü' nü seçin:

    Adding a new viewYeniekleniyor

  3. SubviewTableSubviewTable Için girin ve Yeni düğmesine tıklayın.

  4. Interface Builder ' de düzenlenmek üzere açmak ve Kullanıcı arabirimini tasarlamak için Subviewtable. XIB dosyasına çift tıklayın:

    Designing the new view in XcodeXcode 'da yeni görünüm Xcode 'da yeni görünüm

  5. Gerekli tüm eylemleri ve aykırı değerleri bağlayın.

  6. değişikliklerinizi kaydedin ve xcode ile eşitlemek için Mac için Visual Studio geri dönün.

Sonra, alt Viewtable. cs ' i düzenleyin ve yeni görünümü yüklendiğinde doldurmak için AwakeFromNib dosyasına aşağıdaki kodu ekleyin:

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);
}

Hangi görünümün görüntülemekte olduğunu izlemek için projeye bir Enum ekleyin. Örneğin, Subviewtype. cs:

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

Pencerenin, görünümü kullanacağı ve görüntüleyen. XIB dosyasını düzenleyin. C# kodu tarafından belleğe yüklendikten sonra görünümün kapsayıcısı olarak davranacak bir özel görünüm ekleyin ve bunu adlı bir çıkış olarak kullanıma sunun :

Gerekli çıkışı oluşturmak

değişikliklerinizi kaydedin ve xcode ile eşitlemek için Mac için Visual Studio geri dönün.

Sonra, pencerenin. cs dosyasını yeni görünümü görüntüleyecek şekilde düzenleyin (örneğin, MainWindow. cs) ve aşağıdaki kodu ekleyin:

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);
}

Pencerenin kapsayıcısında bir. XIB dosyasından yüklenen yeni bir görünüm göstermesi gerektiğinde (yukarıda eklenen özel görünüm ), bu kod var olan tüm görünümü kaldırmayı ve yeni bir görünüm için değiştirmeyi işler. Ekranda bir görünüm olduğunu görmek için onu ekrandan kaldırır. Daha sonra geçirilen görünüm (bir görünüm denetleyicisinden yüklendiği gibi), Içeriği Içerik alanına sığacak şekilde yeniden boyutlandırır ve görüntüleme için içeriğe ekler.

Yeni bir görünüm görüntülemek için aşağıdaki kodu kullanın:

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

Bu, yeni görünüm için görünüm denetleyicisinin yeni bir örneğini oluşturur, türünü ayarlar (projeye eklenen enum tarafından belirtildiği gibi) ve DisplaySubview görünümü gerçekten görüntülemek Için pencerenin sınıfına eklenen yöntemi kullanır. Örnek:

Ekran görüntüsü, görüntüler Ile çalışma penceresinde seçilen tablo görünümünü gösterir.

Xamarin. Mac uygulamasında Windows ile çalışma hakkında daha fazla bilgi için lütfen Windows ve iletişim kutuları belgelerinize bakın.

Özet

Bu makale, Xamarin. Mac uygulamasında. XIB dosyalarıyla çalışma hakkında ayrıntılı bir bakış gerçekleştirmiştir. Uygulamanızın Kullanıcı arabirimini oluşturmak için farklı türleri ve kullanımları ve Xcode 'un Interface Builder. XIB dosyalarını ve C# kodunda. XIB dosyalarını nasıl kullanacağınızı gördük.