ios中怎么在xib中添加的scoller没有显示
2015-01-01 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517195
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
供你参考,看看是否哪里存在问题:直接加载xib中的UIView
创建一个View1.xib, 随便设一个背景色,加一个标识UILabel, 这样好知道是这个view是哪一个view. 你可以在这个view上加作意的subview,我只是说明原理,所以这儿并没有加作何subview. 最终我的View1
由于View1会放到其它View上作为subview,所以这儿size是Freeform, Status Bar是:None。
将下面代码放到viewDidLoad中:
//1
NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"View1" owner:nil options:nil]; //&1
UIView *v = [views lastObject];
CGRect r = v.frame;
r.origin.y += 80;
v.frame = r;
[self.view addSubview:v];
&1这行代码就是加载View1.xib, 然后将xib中的UIView实保存到views中, 由于xib中我们只拖入了一个view, 所以这儿lastObject就返回这个view的实例,这样便加载了xib中的UIView. 接着将这个UIView addSubview到其它view上,运行效果如图:
2. 通过Owner建立变量关联
首先我们为ViewController创建一个IBOutlet属性:
@property (nonatomic, weak) IBOutlet UIView *referencedView;
接着同上面介绍的一样创建一个View2.xib,
File’s Owner中,我们设为ViewController, 这样我们就可以与实例变量_referencedView建立关联了,如图:
接着在viewDidLoad中,在刚才加入的代码下面添加如下代码:
// 2
[[NSBundle mainBundle] loadNibNamed:@"View2" owner:self options:nil];
r = _referencedView.frame;
r.origin.y = v.frame.size.height + v.frame.origin.y;
_referencedView.frame = r;
[self.view addSubview:_referencedView];
与//1中的代码有点类似,只不过owner属性为self了。这样一来,loadNibNamed后,就会实例化与之关联的变量_referencedView, 运行程序你将会看到效果:
3.Class Owner建立变量关联
其实这个原理与上面2说的一样的,只不过这儿我们特别定义一个class来作为xib的Owner, 要所有需要关系的view都可以声明在这个Owner中,这样方便代码管理与维护。
这里我们声明一个NSObject的子类FileOwner, 然后再在FileOnwer中声明IBOutLet的关联变量:
@property (nonatomic, weak) IBOutlet UIView *view;
同理创建一个View3.xib, File’s Owner设为FileOwner, 并建立view关联:
接着在viewDidLoad结尾处添加以下代码:
// 3
FileOwner *owner = [FileOwner new];
[[NSBundle mainBundle] loadNibNamed:@"View3" owner:owner options:nil];
r = owner.view.frame;
r.origin.y = _referencedView.frame.origin.y + _referencedView.frame.size.height;
owner.view.frame = r;
[self.view addSubview:owner.view];
运行效果:
4. 引入UIView Category
为了代码简单,我们增加一个UIView Category方法:
+(id)loadFromNibNamed:(NSString*) nibName {
return [FileOwner viewFromNibNamed:nibName];
}
其中FileOwner的class 方法:
+(id)viewFromNibNamed:(NSString*) nibName {
FileOwner *owner = [self new];
[[NSBundle mainBundle] loadNibNamed:nibName owner:owner options:nil];
return owner.view;
}
这样加载xib的代码就会变得更简单。
同理,我们创建一个View4.xib, File’s Owner设为FileOwner, 并建立view关联:
接着在viewDidLoad尾添加代码:
// 4
UIView *v4 = [UIView loadFromNibNamed:@"View4"];
r = v4.frame;
r.origin.y = owner.view.frame.origin.y + owner.view.frame.size.height;
v4.frame = r;
[self.view addSubview:v4];
创建一个View1.xib, 随便设一个背景色,加一个标识UILabel, 这样好知道是这个view是哪一个view. 你可以在这个view上加作意的subview,我只是说明原理,所以这儿并没有加作何subview. 最终我的View1
由于View1会放到其它View上作为subview,所以这儿size是Freeform, Status Bar是:None。
将下面代码放到viewDidLoad中:
//1
NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"View1" owner:nil options:nil]; //&1
UIView *v = [views lastObject];
CGRect r = v.frame;
r.origin.y += 80;
v.frame = r;
[self.view addSubview:v];
&1这行代码就是加载View1.xib, 然后将xib中的UIView实保存到views中, 由于xib中我们只拖入了一个view, 所以这儿lastObject就返回这个view的实例,这样便加载了xib中的UIView. 接着将这个UIView addSubview到其它view上,运行效果如图:
2. 通过Owner建立变量关联
首先我们为ViewController创建一个IBOutlet属性:
@property (nonatomic, weak) IBOutlet UIView *referencedView;
接着同上面介绍的一样创建一个View2.xib,
File’s Owner中,我们设为ViewController, 这样我们就可以与实例变量_referencedView建立关联了,如图:
接着在viewDidLoad中,在刚才加入的代码下面添加如下代码:
// 2
[[NSBundle mainBundle] loadNibNamed:@"View2" owner:self options:nil];
r = _referencedView.frame;
r.origin.y = v.frame.size.height + v.frame.origin.y;
_referencedView.frame = r;
[self.view addSubview:_referencedView];
与//1中的代码有点类似,只不过owner属性为self了。这样一来,loadNibNamed后,就会实例化与之关联的变量_referencedView, 运行程序你将会看到效果:
3.Class Owner建立变量关联
其实这个原理与上面2说的一样的,只不过这儿我们特别定义一个class来作为xib的Owner, 要所有需要关系的view都可以声明在这个Owner中,这样方便代码管理与维护。
这里我们声明一个NSObject的子类FileOwner, 然后再在FileOnwer中声明IBOutLet的关联变量:
@property (nonatomic, weak) IBOutlet UIView *view;
同理创建一个View3.xib, File’s Owner设为FileOwner, 并建立view关联:
接着在viewDidLoad结尾处添加以下代码:
// 3
FileOwner *owner = [FileOwner new];
[[NSBundle mainBundle] loadNibNamed:@"View3" owner:owner options:nil];
r = owner.view.frame;
r.origin.y = _referencedView.frame.origin.y + _referencedView.frame.size.height;
owner.view.frame = r;
[self.view addSubview:owner.view];
运行效果:
4. 引入UIView Category
为了代码简单,我们增加一个UIView Category方法:
+(id)loadFromNibNamed:(NSString*) nibName {
return [FileOwner viewFromNibNamed:nibName];
}
其中FileOwner的class 方法:
+(id)viewFromNibNamed:(NSString*) nibName {
FileOwner *owner = [self new];
[[NSBundle mainBundle] loadNibNamed:nibName owner:owner options:nil];
return owner.view;
}
这样加载xib的代码就会变得更简单。
同理,我们创建一个View4.xib, File’s Owner设为FileOwner, 并建立view关联:
接着在viewDidLoad尾添加代码:
// 4
UIView *v4 = [UIView loadFromNibNamed:@"View4"];
r = v4.frame;
r.origin.y = owner.view.frame.origin.y + owner.view.frame.size.height;
v4.frame = r;
[self.view addSubview:v4];
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询