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.
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:
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:
Ö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:
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:
Kitaplı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:
Mac için Visual Studio açın ve yeni bir Xamarin. Mac projesi başlatın.
Çözüm bölmesiprojeye sağ tıklayıp yeni dosya Ekle... seçeneğini belirleyin.
MacWindows denetleyicisiniseçin:
Yeni bir pencere ekleniyorMainWindowAd için girin veMainWindowdüğmesine tıklayın:
Yeni ana pencere ekleme yeniProjeye tekrar sağ tıklayın ve yeni dosya Ekle... seçeneğini belirleyin.
Macana menüsüseçin:
Yeni ekleme yeni ana Adı olarak bırakın
MainMenuveMainMenudüğmesine tıklayın.Çözüm bölmesiana. görsel taslak dosyasını seçin, sağ tıklayın ve Kaldır' ı seçin:
Ana görsel taslağı ana görsel taslağı Kaldır Iletişim kutusunda Sil düğmesine tıklayın:
SilmeyiÇözüm bölmesi, bu dosyayı düzenlenmek üzere açmak için Info. plist dosyasına çift tıklayın.
MainMenuMainMenuaçılan listesinden seçin:Çözüm bölmesi, MainMenu. XIB dosyasına çift tıklayarak Xcode 'un Interface Builder düzenlenmek üzere açın.
Kitaplık denetçisinde, Ara alanına yazın ve ardından yeni bir nesneyi tasarım yüzeyine sürükleyin:
Kimlik denetçisinde, sınıfiçin girin:
Arabirim hiyerarşisindenDosya sahibini seçin, bağlantı denetçisine geçin ve temsilcideki bir çizgiyi projeye yeni eklenen nesneye sürükleyin:
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:
MainWindow.
Bu, Xcode 'un Interface Builder pencere tasarımını açar:
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:
- Projenize otomatik olarak eklenen varsayılan olmayan yeni pencereler için projeye yeni bir pencere tanımı ekleyin.
- . XIB dosyasına çift tıklayarak Xcode 'un Interface Builder düzenlenmek üzere pencere tasarımını açın.
- Öznitelik denetçisinde ve Boyut denetçisindegerekli tüm pencere özelliklerini ayarlayın.
- Arabiriminizi derlemek ve öznitelik denetçisindeyapılandırmak için gereken denetimleri sürükleyin.
- Kullanıcı arabirimi öğelerinize yönelik yeniden boyutlandırmayı işlemek için Boyut denetçisini kullanın.
- Pencere Kullanıcı arabirimi öğelerini, dış izin ve eylemler aracılığıyla C# kodu olarak kullanıma sunun.
- 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:
- Kitaplık denetçisinde istenen denetimi bulun ve arabirim düzenleyicisine sürükleyin ve konumlandırın.
- Öznitelik Denetçisi'nin tüm gerekli pencere özelliklerini ayarlayın.
- Kullanıcı arabirimi öğeleriniz için yeniden boyutlandırmayı işlemek üzere Boyut Denetçisi'ne bakın.
- Özel bir sınıf kullanıyorsanız, bunu Identity Inspector içinde ayarlayın.
- Çıkışlar ve eylemler aracılığıyla kullanıcı arabirimi öğelerini C# kodunda ortaya çıkarma.
- Değişikliklerinizi kaydedin ve Xcode ile eşitlemek Mac için Visual Studio geri dönüp geçiş yapın.
Örneğin:
Xcode'da Kitaplık Bölümünden bir Push Düğmesi sürükleyin:
Düğmeyi Arabirim Düzenleyicisi'ndePencere'ye bırakın:
Öznitelik Denetçisi'ninTitle özelliğine tıklayın ve düğmenin başlığını olarak ayarlayın:

Kitaplık Bölümünden bir Etiket sürükleyin:
Etiketi Arabirim Düzenleyicisi'nde düğmesinin yanındaki Pencereye bırakın:
Etiketin sağ tutamacına tutun ve pencerenin kenarına yakın olana kadar sürükleyin:
Etiket Arabirim Düzenleyicisi'nde seçiliyken BoyutDenetçisi'ne geçiş:

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

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.
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:

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:
Xcode'un çalışma Interface Builder.
Dosyanın
NSWindowControlleriçinde öğesini Tasarım Yüzeyi.Kimlik Denetçisi görünümüne geçiş ve Sınıf Adı olarak girin:
Değişikliklerinizi kaydedin ve eşitlemek Mac için Visual Studio geri dön.
Aşağıdakiler içinde yer alan projenize bir WindowController.csÇözüm Bölmesi Mac için Visual Studio:
Yeni sınıf adıXcode'un çalışma Interface Builder.
WindowController.h dosyası kullanılabilir:
Çı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:
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:
Ekranın sağ üst köşesindeki Xcode'da Çift Daire düğmesine tıklayarak Yardımcı Düzenleyici'yi açın:
Xcode bir tarafta Arabirim Düzenleyicisi, diğer tarafta da Kod Düzenleyicisi ile bölünmüş görünüm moduna geçer.
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.
Kod Düzenleyicisi'nin üst kısmında Otomatik Bağlantı'ya tıklayın ve MainWindow.h dosyasını seçin:
Xcode'da artık doğru dosya seçili olmalı:
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!
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:
Bir iletişim kutusu görüntülenir. Bağlantı'nın çıkış olarak ayarlanmış şekilde bırakın ve Ad için girin:
Bağlan düğmesine tıklayarak çıkış oluşturun:

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:
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.
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:
Bağlantı türünü eylem olarak değiştirme:
Ad
ClickedButtonolarakClickedButtonEylem oluşturmak Bağlan düğmesine tıklayın:

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:
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:
Xcode 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:
Çözüm bölmesiprojeye sağ tıklayıp yeni dosya Ekle... seçeneğini belirleyin.
Yeni dosya iletişim kutusunda denetleyici ile Xamarin. MacCocoa penceresiniseçin:
Yeni bir pencere ekleniyorPreferencesWindowPreferencesWindowIçin girin ve Yeni düğmesine tıklayın.Interface Builder içinde düzenlenmek üzere açmak için Preferenceswindow. XIB dosyasına çift tıklayın:
Arabiriminizi tasarlama:
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:

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:
Çözüm bölmesiprojeye sağ tıklayıp yeni dosya Ekle... seçeneğini belirleyin.
Yeni dosya iletişim kutusunda denetleyici ile Xamarin. MacCocoa görünümü' nü seçin:
YeniekleniyorSubviewTableSubviewTableIçin girin ve Yeni düğmesine tıklayın.Interface Builder ' de düzenlenmek üzere açmak ve Kullanıcı arabirimini tasarlamak için Subviewtable. XIB dosyasına çift tıklayın:
Gerekli tüm eylemleri ve aykırı değerleri bağlayın.
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 :
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:
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.
Çalışan uygulamaya örneği
Xcode Kullanıcı bileşenler
genel bakış
Anamenü ayarı
Ana
Uygulama temsilcisini
Uygulama
.










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



MainWindow dosyası
Xcode 'da pencereyi düzenleyen pencereyi
Windows
Xcode 'da yeni görünüm Xcode 'da yeni görünüm 
