从其他viewcontroller更改UIView(内部nib)背景

时间:2013-05-31 15:48:49

标签: iphone ios uiview uiviewcontroller

任何人都知道如何从另一个viewcontroller更改nib内的视图?我有一个从nib-file视图到视图类文件的插座,我有@synthesize视图类.m文件。然后我#import "InfoView.h"(这是视图类)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问题,但这不是问题。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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];" 

答案 2 :(得分:0)

如果您要更改背景颜色,请执行以下操作:

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