从其他视图控制器更改 UIView(笔尖内)背景

Posted

技术标签:

【中文标题】从其他视图控制器更改 UIView(笔尖内)背景【英文标题】:Change UIView (inside nib) background from other viewcontroller 【发布时间】:2013-05-31 15:48:48 【问题描述】:

有人知道如何从另一个视图控制器更改笔尖内的视图吗?我有一个从 nib 文件中的视图到视图类文件的出口,我有 @synthesize 视图类 .m 文件。然后我#import "InfoView.h"(这是视图类)视图到视图控制器,最后我:

    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 问题,但这不是问题。

【问题讨论】:

确保您在自定义视图中正确链接了插座,并确保您已在 xib 文件中指定自定义视图的类 @danypata 是的,已经这样做了 @PaperThick 使用 colorWithRed 方法时需要除以 255.0f 【参考方案1】:

试试这段代码,我已经为你制作了演示应用程序。 创建文件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;

fileOwnerCustomView.XIB 设置为CustomView。并连接插座。 无论您想在哪里使用CustomView,都可以在XIB 中使用UIView 对象,并将UIView 类重命名为CustomView。在您的.h 文件中创建一个IBOutlet,并将其与XIB 中的CustomView 对象连接。 现在这样做:

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

在您的情况下,您的 customview 对象未创建。如果你打印你的对象,它会告诉你nil

【讨论】:

【参考方案2】:

您错误地使用了-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];" 

【讨论】:

感谢您的回答,但现在我使用标签进行了测试,但无法从视图控制器更改其上的文本,所以它一定是链接问题 你确定 infoView 是 != nil 吗?您在哪里将其添加为子视图?【参考方案3】:

如果您尝试更改背景颜色.. 则执行以下操作:

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

【讨论】:

以上是关于从其他视图控制器更改 UIView(笔尖内)背景的主要内容,如果未能解决你的问题,请参考以下文章

从笔尖加载的 UIView 未显示多个 UILabel

iOS:笔尖中的 TableView - 设置背景颜色

意外的 NSAutoresizingMaskLayoutConstraint 将 UIView 从笔尖添加到自动布局情节提要场景

从笔尖创建的 UICollectionViewCell 中的奇怪 UIView

视图控制器完成加载时 UIView 背景颜色发生变化

如何以编程方式更改 stackView 内单个 UIView 的高度?