2013-05-31 3 views
1

Кто-нибудь знает, как изменить представление внутри наконечника из другого диспетчера представлений? У меня есть выход из представления в файле nib-файла в класс-файл вида, и у меня есть @synthesize файл вида-класса .m. И тогда я #import "InfoView.h" (это класс представления) вид на ViewController и наконец-то я:Изменение фона UIView (внутри nib) от другого viewcontroller

InfoView *infoView; 
    if (infoView == nil) 
    { 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"infoView" owner:self options:nil]; 
    infoView = [nib objectAtIndex:0]; 
    } 

infoView.contentView.backgroundColor = [UIColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:1];" 

Но я не могу получить фон изменить.

Неужели кто-нибудь пытался сделать что-то подобное раньше? Я ценю любой ввод, спасибо!

РЕДАКТИРОВАТЬ: Вышли на вопрос UIColor, но это не было проблемой.

+0

Убедитесь, что вы правильно подключили розетки в своем пользовательском представлении и убедитесь, что вы указали класс пользовательского представления в файле xib. – danypata

+0

@ danypata Да, сделали это – PaperThick

+0

@PaperThick. Когда вы используете метод colorWithRed, вам нужно разделить до 255.0f –

ответ

2

Попробуйте этот код я сделал демо-приложение для вас. создать файл CustomView.h

#import <UIKit/UIKit.h> 

@interface CustomView : UIView 

@property (nonatomic, strong) IBOutlet UILabel *titleLbl; 

@end 

CustomView.m. Если вы используете XIB

#import "CustomView.h" 

@implementation CustomView 

@synthesize titleLbl = _titleLbl; 

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 
    if(self = [super initWithCoder:aDecoder]) 
    { 
     NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self options:nil]; 
     UIView *theEditView = [nibObjects objectAtIndex:0]; 
     theEditView.frame = self.bounds; 
     [self addSubview: theEditView]; 
     theEditView = nil; 
    } 


    return self; 
} 

Набор fileOwner из CustomView.XIB является CustomView. и подключить розетки. Где бы вы ни захотели использовать CustomView, возьмите объект UIView в своем XIB и переименуйте класс UIView с CustomView. Создайте IBOutlet в файле .h и подключите его к объекту CustomView в XIB. Теперь это сделать:

self.customViewObj.backgroundColor = [UIColor redColor]; 
self.customViewObj.titleLbl.text = @"Prateek"; 

В вашем случае ваш объект customview не создается. если вы напечатаете свой объект, он покажет вам nil.

0

Вы используете -colorWithRed:green:blue:alpha неправильно. Они ожидают, что значение с плавающей точкой между 0 и 1. Вы должны сделать:

infoView.contentView.backgroundColor = [UIColor colorWithRed:50.0/255.0 green:50.0/255.0 blue:50.0/255.0 alpha:1];" 
+0

Спасибо за ответ, но теперь я тестировал с меткой, и я не мог изменить текст на нем с viewcontroller, так что это проблема с ссылкой – PaperThick

+1

, вы уверены, что infoView is! = nil? Где вы добавляете его в качестве подзаголовка? –

0

Если вы пытаетесь изменить цвет фона .. то сделать это:

infoView.backgroundColor = [UIColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:1]; 
Смежные вопросы