воскресенье, 12 мая 2013 г.

Как создать UIView из Nib файла

Если вы хотите сделать красивое приложение под iOS, то вам не обойтись без кастомных компонентов, которые наследуются от UIView или других элементов. Сами элементы отображения можно создавать самостоятельно в init'ах, а можно и заранее разметить их в Nib файле.

В первом случае не возникает трудностей, достаточно просто создать экземпляр вашего класса.
Для второго слачая с Nib файлом подготовил категорию. Я предоставляю 2 варианта, оба работаю, пользуйтесь тем, который больше нравится
//UIView+UIInitialization.h

#import 

@interface UIView (UIInitialization)

+ (UIView *) viewWithNibName:(NSString *)nibName owner:(NSObject *)owner;

@end



// UIView+UIInitialization.m Version 1

@implementation UIView (UIInitialization)

+ (UIView *) viewWithNibName:(NSString *)nibName owner:(NSObject *)owner
{   
    NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:nibName owner:owner options:NULL];
    NSEnumerator *nibEnumerator = [nibContents objectEnumerator];
    id customView = nil;
    NSObject* nibItem = nil;
    while ((nibItem = [nibEnumerator nextObject]) != nil) {
        if ([nibItem isKindOfClass:[self class]]) {
            customView = nibItem;
            break;
        }
    }
    return customView;
}

@end


// UIView+UIInitialization.m Version 2

@implementation UIView (UIInitialization)

+ (UIView *) viewWithNibName:(NSString *)nibName owner:(NSObject *)owner
{
    UINib *nib = [UINib nibWithNibName:nibName bundle:nil];
    NSArray *nibArray = [nib instantiateWithOwner:owner options:nil];
    id customView = [nibArray objectAtIndex: 0];  
    
    return customView;
}

@end



Комментариев нет:

Отправить комментарий