我创建了一个UIVeiw类和一个.xib。在这个.xib视图中,我将其设置为自由形式,尺寸为400x200,我已将其分配给具有相同名称的自定义类:
故事板:blogView 类文件:blogView.h& blogView.m
在.xib中,我添加了一个标签和一个文本字段,并将它们链接到.h文件中的变量等(参见下面的代码)。
blogCont.h
#import <UIKit/UIKit.h>
@interface blogCont : UIView
@property (strong, nonatomic) IBOutlet UILabel *lbBlogDate;
@property (strong, nonatomic) IBOutlet UITextView *txtBlogTitle;
@end
blogCont.m
#import "newsStoryView.h"
@implementation blogCont
@synthesize lbBlogDate;
@synthesize txtBlogTitle;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code place a log to see if it loads
NSLog(@"View Loaded");
}
return self;
}
@end
现在在我的主viewController.m文件中,我已经添加了以下代码来初始化这个视图类,并且我添加了一个背景颜色来查看是否加载了它。
viewController.m
UIView *blogCont = [[blogView alloc] init];
blogCont.backgroundColor = [UIColor purpleColor];
[subview addSubview:blogCont];
现在当我运行它时一切正常但是因为我没有看到紫色背景看起来好像视图没有加载,但是在日志中我确实看到了我在此视图中的NSLog消息NSLog(@“查看已加载“);所以它似乎启动了这个,但我不能为我的生活得到这个显示?
现在,如果我稍微将代码更改为我的主View Controller.m fiel:
CGRect blogFrame;
blogFrame.origin.x = 20;
blogFrame.origin.y = 20;
blogFrame.size = CGRectMake(400,200);;
newsStoryView *blogCont = [[blogView alloc] blogFrame];
blogCont.backgroundColor = [UIColor purpleColor];
[subview addSubview:blogCont];
然后我让我的视图显示一个漂亮的紫色框,所以当我设置一个框架大小时这会显示出来,并且使用它'blogFrame'来初始化视图,我认为所有这些都将在.xib设置中设置所以不需要这样做吗?
那我怎么能创建这个外部视图类并将其分配到另一个视图然后操纵它的数据,因为使用blogCont.lbBlogDate.text访问.xib中的标签似乎不起作用,它可能会这样做但是作为我无法查看,我无法确认。
我做错了什么?
由于
答案 0 :(得分:0)
似乎我几乎回答了我自己的问题,然后做了:
我没有在单独的类视图中设置大小我在初始化时要求大小:
- (id)initWithFrame:(CGRect)frame
这要求大小
所以我可以对上面的内容进行以下操作:
- (id)init
{
self = [super initWithFrame:CGRectMake(0, 0, 478, 220)];
.... rest of code
在视图加载中设置大小。
但是当我在主视图控制器中启动它时,我也可以设置它,如下所示:
newsStoryView *blogCont = [[blogView alloc] initWithFrame:CGRectMake(0, 0, 400, 200)];
这更好,因为我可以控制每个人的位置。希望这有助于任何人