2012-03-25 21 views
9

Şu anda monotouch kullanmayı ve Mike BlueStein'ın tekdüze kitabını takip etmeye çalışıyorum. Kötü bir kitap değil, ama xcode 4'ten (biraz önce) biraz modası geçmiş ve monoton üzerinde daha yeni bir versiyon çıktı.Monoton olarak XIB dosyası tanımlı görünümüne özel görünüm ekleme

Neyse, benim projede ben bir denetleyici ve bir xib dosyası var. Ayrıca, çekme yöntemini geçersiz kılan özel bir görünümüm (ör., Myview: UIView). Özel görünümümü, xib dosyasında tanımlı görünümün yanında veya üstüne göstermek istiyorum. Bunu nasıl yaparım?

Denetleyicide, LoadView yöntemini geçersiz kılar ve Görünümü özel görünümümün örneğine ayarlıyorumsa, onu görebilir, ancak xib dosyasında tanımlanan her şeyi kaybederim. Alt görünüm olarak eklemeyi denerseniz, hiç görünmez.

Neyi eksik? Eğer soru net değilse, lütfen bana sorun, açıklığa kavuşabilirim.

Şerefe.

Birincisi, RegisterAttribute görünümüyle süslemek:

[Register("MyView")] 
public class MyView : UIView 
{ 
} 

ve aşağıdaki yapıcı uygulamak:

public MyView(IntPtr handle) : base(handle) {} 

+0

Bu [SO soru] (http://stackoverflow.com/questions/863321/iphone -Araba-a-view-a-nib-dosya-oluşturulmuş-arayüz-oluşturucu-ile-yüklemek) – tipycalFlow

cevap

22

bir XIB'nin içinde özel bir görünüm kullanmak için aşağıdaki adımları izleyin Çalışma zamanı, bir bellek uyarısıyla yok edildikten sonra görünümü yeniden oluşturmaya çalışırken bu kurucu gereklidir. (Her zaman MonoDevelop aracılığıyla üzerine çift tıklayarak) Xcode

  • Açık XIB'ye ve istediğiniz bir UIView ekleyin: Eğer özel bir sınıf oluşturduktan sonra.
  • Xcode, MyView için UIView sınıf (veya hangisi ad RegisterAttribute geçirilen) olduğunu ayarlayın:

Custom class for custom view

  • Derleme-Çalıştır.

DÜZENLEME:

bir XIB'nin yüklenen denetleyicileri için LoadView üstüne yazma. LoadView, denetleyicinin görünümü bir XIB'den yüklenmediğinde denetleyicinin görünümünü oluşturmak içindir.

+0

Şerefe yardımcı olabilir. Mükemmel cevap. –

3

Teşekkür Dimitris, büyük cevap.

  1. MonoDevelop yeni XIb'nin Dosya Ekle (yani LoginView.xib)
  2. : Benim gibi karıştı olanlar için

    , burada ekleyebilir ve kısmi/subview bir XIb'nin dosyasını kullanmak için simplist prosedürdür Yeni (kısmi) bir Sınıf ekle, bu görünüm için özel sınıf (The Code-behind dosyası diyelim) olacak.Herhangi bir ad verin "LoginView.cs")
  3. Öznitelik (RegisterAttribte) ve Constrctor'u yukarıda açıklandığı şekilde Dimitris'e ekleyin.
    1. XCode IB'de açmak için LoginView.xib çift tıklatın. Sonra gerekirse (yani LoginView.cs)
  4. herhangi çıkışları veya eylemi ekleyin "arka planda kodlama dosyasında" işaret etmek xib dosyasının Custom Class Özelliği Değiştir. MonoDevelop bir .designer dosyası oluşturacak ve kodu arkadaki dosyanıza ekleyecektir, burası tüm satış noktalarını ve eylemlerinizi görebileceğiniz yerdir. Eğer, bu görünüm eklemek aşağıdaki gibi .xib dosyasını yüklemek istediğiniz kontrolörleri ise
  5. :

    var görünümleri = NSBundle.MainBundle.LoadNib ("LoginView", bu, null); LoginView loginView = Çalışma Zamanı.GetNSObject (views.ValueAt (0)) LoginView; mainLayout.AddSubview (loginView); // mainLoyout Bu üç satır flexaddicted cevap dayanmaktadır

benim ana ViewController yer tutucu olduğu here

İlgili konular