2008-10-26 23 views

cevap

28
  1. Arabirim Oluşturucu'da, Görünüm şablonuyla yeni bir xib oluşturun. xib nesnelerin listesinde görünümünde
    • tıklayın (ayrıca 'İlk Yanıtlayıcı'yı bkz "dosya'nın sahibi ve' olmalıdır).
    • itin Cmd-4'ün Kimlik bölmesini açmak için müfettiş.
    • "Sınıf Adı" alanına senin sınıfının adını yazın ve getiri itin.

Sen d gerekir paçavra düğmelerinin içinde. Koddan ucu almak için -[NSBundle loadNibNamed:owner:options:] kullanın. Görünümünüz, döndürülen dizideki ilk nesne olmalıdır. Benim durumumda

+0

Aynı şeyi yapmaya çalışıyorum? Koduma ekledim, hem özel UIView sınıf ismim var, hem de bana özel UIView init metoduna tekrarlayan bir çağrı veriyor. Bu benim özel görünümü kullanan ebeveyn UIControllerView (a) var, bu XIB için XIB için ben classname "clockview" olarak ayarladım bir UIView kullanıyorum, ama sonra (b) benim gerçek clockview özel UIView (değil UIControllerView) XIB dosyası Ben aynı şeyi yaptım ve sınıf adı "clockview" olarak ayarlayın. – Greg

+0

@Colin 'File's Owner'ı özel UIView sınıfına ayarlamamız gerekiyor mu? 'UIView' veya 'myCustomView' ayarlarında herhangi bir değişiklik görmüyorum. Bu durumda 'Dosya Sahibi'nin amacı nedir? – pixelfreak

+0

UIView'i birden çok yerde bir uçlu olarak kullanmak istiyorum. IBOutlets'ı her seferinde bağlamak zorunda kalmadan bunu yapmanın bir yolu var mı? – jowie

3

, benim bakış kontrolör benim görünümün .xib gelen IBOutlets herhangi bir bilgiye sahip istemiyordu. Görünüm alt sınıfımın IBOutlets'e sahip olmasını istedim. Ne yazık ki UIView'in bir initWithNibName: yöntemi yoktur, bu yüzden kendi kategorimi oluşturdum.

IB
  • , ana UIView tıklayın ve Kimlik İnceleyicisi'nde, IB
  • , dosya'nın için Sahibi sizin alt sınıfa sınıf ayarlayın ve içinde: İşte

    ne yaptım Kimlik Müfettiş, görünümünüzü örneğini yeni kategori yöntemi initWithNibName: kullanın alt sınıf
  • için sınıf olarak ayarlayın.

    - (instancetype)initWithNibName:(NSString *)nibName 
    { 
        NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil]; 
        if (arrayOfViews.count < 1) { 
         return nil; 
        } 
    
        self = arrayOfViews[0]; 
    
        return self; 
    } 
    

    this post esinlenerek: Burada

Ve benim yarattığım bir kategori.

Şimdiye kadar, çerçevenin otomatik olarak ayarlanacağına dikkat edin, bu nedenle postadaki kodun aksine, çerçeveyi açıkça ayarlamanıza gerek yoktu. Ayrıca, posta kodunun aksine, owner:self'u ayarlamam gerektiğinden, IBOutlet'lerin doğru şekilde bağlanması gerekir. Eğer I (a) ana UIControllerView ve (b) özel UIView burada kendisi için kullanıyor olması gerektiğini sınıfadı biliyor musunuz -

İlgili konular