SORU
20 ŞUBAT 2011, Pazar


UİView ve initWithFrame ve UÇ bir dosya. Nasıl UÇ yüklenen dosyayı alabilir miyim?

UIView baseViewaradım ve diğer bazı görüşlere Ekle initWithFrameve bazı özel şeyler var. Aynı görünüm, aynı zamanda UÇ bir dosya var.

Şu anda yaptığım iş bu yüzden hangi AppController görünümü görüntülemek için baseView görünüm eklemek istiyorum UIViewController sınıf AppController adlı var :

self.view = baseView; ama sorun UÇ dosya yüklü değil. Nasıl özelleştirilmiş malzeme VE UÇ dosya/Çalıştır yüklü alır emin olabilirim ?

CEVAP
20 ŞUBAT 2011, Pazar


Birçok seçenek, nasıl senin "" sınıf ve uygulamanız için kullanılan entegre olması gerekiyordu. baseView bağlı olarak Değil net ne kadar düşündüğünüz için kullanın bu sınıf olarak görünümünde bir UİViewController alt veya bir yeniden kullanılabilir modüler bileşen olmanın manası örneği birden çok kez boyunca uygulamanız için kullanılan birçok farklı görünümü denetleyicileri.

Eğer görüşünü UİViewController bir alt sınıfta sadece görünümü olacağı varsa, o zaman Phonitive doğru ... ... birlikte UİViewController alt ile bundle .xib ve UİViewController son başlatma yapmak için viewDidLoad dosya kullanın.

Ama eğer Görünümü sınıfınızın bir bileşeni olmak istiyorsanız farklı görünüm denetleyicileri de dahil) kodunu kullanarak, ya da entegre, birden çok kez yeniden kullanılabilir .başka bir denetleyici için dosya xib, hem initWithFrame uygulamak gerekir: her iki durumda ele ınit yöntemi ve awakeFromNib,. İç başlatma her zaman bazı nesneleri içerir .xib, sonra initWithFrame yükünüzü gerekir .elle sırada destek için xib "müşteri" kodu ile kendi widget oluşturmak istediğiniz dersleri. Ve aynı şekilde, bir .dosya nesnesi içeren xib sonra kod gerekli herhangi bir sonlandırma çağrısı emin olmak için awakeFromNib gerekir.

İşte bir uç UI tasarım ile UİView alt bileşeni oluşturmak için nasıl bir örnek.

MyView.h:

@interface MyView : UIView
{
    UIView *view;
    UILabel *l;
}
@property (nonatomic, retain) IBOutlet UIView *view;
@property (nonatomic, retain) IBOutlet UILabel *l;

MyView.m:

#import "MyView.h"
@implementation MyView
@synthesize l, view;

- (id)initWithFrame:(CGRect)frame 
{
    self = [super initWithFrame:frame];
    if (self) 
    {
        // Initialization code.
        //
        [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
        [self addSubview:self.view];
    }
    return self;
}

- (void) awakeFromNib
{
    [super awakeFromNib];

    // commenters report the next line causes infinite recursion, so removing it
    // [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
    [self addSubview:self.view];
}

- (void) dealloc
{
     [l release];
     [view release];
     [super dealloc];
}

Uç dosyası gibi bu dosya sahibi MyView sınıf değiştirilmesi gerekiyor hariç) görünecek.

enter image description here

Dosyanın Sahibi için Görünüm ve etiket çıkışları her iki kanca emin olun. İşte bu! Yeniden kullanılabilir UİView widget oluşturmak için şablon.

Bu çok güzel bir şey hakkında bu yapısı olduğunu yerleştirebilirsiniz örnekleri sizin MyView nesne diğer ucu dosyaları, sadece yerini UİView de konumu/boyutu, sonra bambaşka bir sınıf kimliği Müfettiş (CMD-4) MyView ve boom, sende bir örneği sizin widget görünümleri ne istiyorsun! UİKit nesneleri gibi nesneleri sizin widget kullanarak ilginç olaylardan haberdar olabilir, böylece temsilci protokolleri uygulamak ve özelleştirmek için widget görüntülemek için veri sağlayabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Abe Olandres

    Abe Olandres

    16 EYLÜL 2006
  • eurotuner

    eurotuner

    6 Mart 2006
  • LounaTutorials

    LounaTutoria

    10 EYLÜL 2009