当从xib加载控件时,发现莫名其妙 我被点了名不好使,怎么解决

当前位置:& >
> 解析iOS应用的UI开发中懒加载和xib的简单使用方法
解析iOS应用的UI开发中懒加载和xib的简单使用方法
1.懒加载基本
懒加载――也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其get方法.
注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化
2.使用懒加载的好处:
(1)不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强
(2)每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合
3.代码示例
代码如下:
//& YYViewController.m
//& 03-图片浏览器初步
//& Created by apple on 14-5-21.
//& Copyright (c) 2014年 itcase. All rights reserved.
#import "YYViewController.h"
#define POTOIMGW&&& 200
#define POTOIMGH&&& 300
#define POTOIMGX&&& 60
#define& POTOIMGY&&& 50
@interface YYViewController ()
@property(nonatomic,strong)UILabel *
@property(nonatomic,strong)UILabel *
@property(nonatomic,strong)UIImageView *
@property(nonatomic,strong)UIButton *
@property(nonatomic,strong)UIButton *
@property(nonatomic,strong)NSArray *
@property(nonatomic ,assign)
代码如下:
@implementation YYViewController
- (void)viewDidLoad
&&& [super viewDidLoad];
&&& [self change];
-(void)change
&&& [self.firstlab setText:[NSString stringWithFormat:@"%d/5",self.i+1]];
&&& //先get再set
&&& self.icon.image=[UIImage imageNamed:self.array[self.i][@"name"]];
&&& self.lastlab.text=self.array[self.i][@"desc"];
&&& self.leftbtn.enabled=(self.i!=0);
&&& self.rightbtn.enabled=(self.i!=4);
//延迟加载
/**1.图片的序号标签*/
-(UILabel *)firstlab
&&& //判断是否已经有了,若没有,则进行实例化
&&& if (!_firstlab) {
&&&&&&& _firstlab=[[UILabel alloc]initWithFrame:CGRectMake(20, 10, 300, 30)];
&&&&&&& [_firstlab setTextAlignment:NSTextAlignmentCenter];
&&&&&&& [self.view addSubview:_firstlab];
&&& return _
/**2.图片控件的延迟加载*/
-(UIImageView *)icon
&&&& //判断是否已经有了,若没有,则进行实例化
&&& if (!_icon) {
&&&&&&& _icon=[[UIImageView alloc]initWithFrame:CGRectMake(POTOIMGX, POTOIMGY, POTOIMGW, POTOIMGH)];
&&&&&&& UIImage *image=[UIImage imageNamed:@"biaoqingdi"];
&&&&&&& _icon.image=
&&&&&&& [self.view addSubview:_icon];
&&& return _
/**3.描述控件的延迟加载*/
-(UILabel *)lastlab
&&&& //判断是否已经有了,若没有,则进行实例化
&&& if (!_lastlab) {
&&&&&&& _lastlab=[[UILabel alloc]initWithFrame:CGRectMake(20, 400, 300, 30)];
&&&&&&& [_lastlab setTextAlignment:NSTextAlignmentCenter];
&&&&&&& [self.view addSubview:_lastlab];
&&& return _
/**4.左键按钮的延迟加载*/
-(UIButton *)leftbtn
&&&& //判断是否已经有了,若没有,则进行实例化
&&& if (!_leftbtn) {
&&&&&&& _leftbtn=[UIButton buttonWithType:UIButtonTypeCustom];
&&&&&&& _leftbtn.frame=CGRectMake(0, self.view.center.y, 40, 40);
&&&&&&& [_leftbtn setBackgroundImage:[UIImage imageNamed:@"left_normal"] forState:UIControlStateNormal];
&&&&&&& [_leftbtn setBackgroundImage:[UIImage imageNamed:@"left_highlighted"] forState:UIControlStateHighlighted];
&&&&&&& [self.view addSubview:_leftbtn];
&&&&&&& [_leftbtn addTarget:self action:@selector(leftclick:) forControlEvents:UIControlEventTouchUpInside];
&&& return _
/**5.右键按钮的延迟加载*/
-(UIButton *)rightbtn
&&& if (!_rightbtn) {
&&&&&&& _rightbtn=[UIButton buttonWithType:UIButtonTypeCustom];
&&&&&&& _rightbtn.frame=CGRectMake(POTOIMGX+POTOIMGW+10, self.view.center.y, 40, 40);
&&&&&&& [_rightbtn setBackgroundImage:[UIImage imageNamed:@"right_normal"] forState:UIControlStateNormal];
&&&&&&& [_rightbtn setBackgroundImage:[UIImage imageNamed:@"right_highlighted"] forState:UIControlStateHighlighted];
&&&&&&& [self.view addSubview:_rightbtn];
&&&&&&& [_rightbtn addTarget:self action:@selector(rightclick:) forControlEvents:UIControlEventTouchUpInside];
&&& return _
//array的get方法
-(NSArray *)array
&&& if (_array==nil) {
&&&&&&& NSString *path=[[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
&&&&&&& _array=[[NSArray alloc]initWithContentsOfFile:path];
&&& return _
-(void)rightclick:(UIButton *)btn
&&& self.i++;
&&& [self change];
-(void)leftclick:(UIButton *)btn
&&& self.i--;
&&& [self change];
xib的简单使用
一、简单介绍
xib和storyboard的比较,一个轻量级一个重量级。
都用来描述软件界面
都用Interface Builder工具来编辑
Xib是轻量级的,用来描述局部的UI界面
Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系
二、xib的简单使用
1.建立xib文件
建立的xib文件命名为appxib.xib
2.对xib进行设置
  根据程序的需要,这里把view调整为自由布局
建立view模型(设置长宽等参数)
调整布局和内部的控件
完成后的单个view
3.使用xib文件的代码示例
YYViewController.m文件代码如下:
代码如下:
//& YYViewController.m
//& 10-xib文件的使用
//& Created by apple on 14-5-24.
//& Copyright (c) 2014年 itcase. All rights reserved.
#import "YYViewController.h"
#import "YYapp.h"
@interface YYViewController ()
@property(nonatomic,strong)NSArray *
代码如下:
@implementation YYViewController
//1.加载数据信息
-(NSArray *)app
&&& if (!_app) {
&&&&&&& NSString *path=[[NSBundle mainBundle]pathForResource:@"app.plist" ofType:nil];
&&&&&&& NSArray *temparray=[NSArray arrayWithContentsOfFile:path];
&&&&&&& //字典转模型
&&&&&&& NSMutableArray *arrayM=[NSMutableArray array ];
&&&&&&& for (NSDictionary *dict in temparray) {
&&&&&&&&&&& [arrayM addObject:[YYapp appWithDict:dict]];
&&&&&&& _app=arrayM;
&&& return _
//创建界面原型
- (void)viewDidLoad
&&& [super viewDidLoad];
&&& NSLog(@"%d",self.app.count);
&&& //九宫格布局
&&& int totalloc=3;
&&& CGFloat appviewW=80;
&&& CGFloat appviewH=90;
&&& CGFloat margin=(self.view.frame.size.width-totalloc*appviewW)/(totalloc+1);
&&& int count=self.app.
&&& for (int i=0; i& i++) {
&&&&&&& int row=i/
&&&&&&& int loc=i%
&&&&&&& CGFloat appviewX=margin + (margin +appviewW)*
&&&&&&& CGFloat appviewY=margin + (margin +appviewH)*
&&&&&&& YYapp *app=self.app[i];
&&&&&&& //拿出xib视图
&&&&&& NSArray& *apparray= [[NSBundle mainBundle]loadNibNamed:@"appxib" owner:nil options:nil];
&&&&&&& UIView *appview=[apparray firstObject];
&&&&&&& //加载视图
&&&&&&& appview.frame=CGRectMake(appviewX, appviewY, appviewW, appviewH);
&&&&&&& UIImageView *appviewImg=(UIImageView *)[appview viewWithTag:1];
&&&&&&& appviewImg.image=app.
&&&&&&& UILabel *appviewlab=(UILabel *)[appview viewWithTag:2];
&&&&&&& appviewlab.text=app.
&&&&&&& UIButton *appviewbtn=(UIButton *)[appview viewWithTag:3];
&&&&&&& [appviewbtn addTarget:self action:@selector(appviewbtnClick:) forControlEvents:UIControlEventTouchUpInside];
&&&&&&& appviewbtn.tag=i;
&&&&&&& [self.view addSubview:appview];
/**按钮的点击事件*/
-(void)appviewbtnClick:(UIButton *)btn
&&& YYapp *apps=self.app[btn.tag];
&&& UILabel *showlab=[[UILabel alloc]initWithFrame:CGRectMake(60, 450, 200, 20)];
&&& [showlab setText:[NSString stringWithFormat: @"%@下载成功",apps.name]];
&&& [showlab setBackgroundColor:[UIColor lightGrayColor]];
&&& [self.view addSubview:showlab];
&&& showlab.alpha=1.0;
&&& //简单的动画效果
&&& [UIView animateWithDuration:2.0 animations:^{
&&&&&&& showlab.alpha=0;
&&& } completion:^(BOOL finished) {
&&&&&&& [showlab removeFromSuperview];
运行效果:
三、对xib进行连线示例
1.连线示例
新建一个xib对应的视图类,继承自Uiview
在xib界面右上角与新建的视图类进行关联
把xib和视图类进行连线
注意:在使用中把weak改成为强引用。否则...
2.连线后的代码示例
YYViewController.m文件代码如下:
代码如下:
//& YYViewController.m
//& 10-xib文件的使用
//& Created by apple on 14-5-24.
//& Copyright (c) 2014年 itcase. All rights reserved.
#import "YYViewController.h"
#import "YYapp.h"
#import "YYappview.h"
@interface YYViewController ()
@property(nonatomic,strong)NSArray *
代码如下:
@implementation YYViewController
//1.加载数据信息
-(NSArray *)app
&&& if (!_app) {
&&&&&&& NSString *path=[[NSBundle mainBundle]pathForResource:@"app.plist" ofType:nil];
&&&&&&& NSArray *temparray=[NSArray arrayWithContentsOfFile:path];
&&&&&&& //字典转模型
&&&&&&& NSMutableArray *arrayM=[NSMutableArray array ];
&&&&&&& for (NSDictionary *dict in temparray) {
&&&&&&&&&&& [arrayM addObject:[YYapp appWithDict:dict]];
&&&&&&& _app=arrayM;
&&& return _
//创建界面原型
- (void)viewDidLoad
&&& [super viewDidLoad];
&&& NSLog(@"%d",self.app.count);
&&& //九宫格布局
&&& int totalloc=3;
&&& CGFloat appviewW=80;
&&& CGFloat appviewH=90;
&&& CGFloat margin=(self.view.frame.size.width-totalloc*appviewW)/(totalloc+1);
&&& int count=self.app.
&&& for (int i=0; i& i++) {
&&&&&&& int row=i/
&&&&&&& int loc=i%
&&&&&&& CGFloat appviewX=margin + (margin +appviewW)*
&&&&&&& CGFloat appviewY=margin + (margin +appviewH)*
&&&&&&& YYapp *app=self.app[i];
&&&&&&& //拿出xib视图
&&&&&& NSArray& *apparray= [[NSBundle mainBundle]loadNibNamed:@"appxib" owner:nil options:nil];
&&&&&&& //注意这里的类型名!
&&&&&&& //UIView *appview=[apparray firstObject];
&&&&&&& YYappview& *appview=[apparray firstObject];
&&&&&&& //加载视图
&&&&&&& appview.frame=CGRectMake(appviewX, appviewY, appviewW, appviewH);
&&&&&&&&& [self.view addSubview:appview];
&&&&&&& appview.appimg.image=app.
&&&&&&& appview.applab.text=app.
&&&&&&& appview.appbtn.tag=i;
&&&&&&& [ appview.appbtn addTarget:self action:@selector(appviewbtnClick:) forControlEvents:UIControlEventTouchUpInside];
/**按钮的点击事件*/
-(void)appviewbtnClick:(UIButton *)btn
&&& YYapp *apps=self.app[btn.tag];
&&& UILabel *showlab=[[UILabel alloc]initWithFrame:CGRectMake(60, 450, 200, 20)];
&&& [showlab setText:[NSString stringWithFormat: @"%@下载成功",apps.name]];
&&& [showlab setBackgroundColor:[UIColor lightGrayColor]];
&&& [self.view addSubview:showlab];
&&& showlab.alpha=1.0;
&&& //简单的动画效果
&&& [UIView animateWithDuration:2.0 animations:^{
&&&&&&& showlab.alpha=0;
&&& } completion:^(BOOL finished) {
&&&&&&& [showlab removeFromSuperview];
YYappview.h文件代码(已经连线)
代码如下:
#import &UIKit/UIKit.h&
@interface YYappview : UIView
@property (strong, nonatomic) IBOutlet UIImageView *
@property (strong, nonatomic) IBOutlet UILabel *
@property (strong, nonatomic) IBOutlet UIButton *
扫一扫,手机访问我不行了,改 iOS 项目的 xib,想跑路。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
我不行了,改 iOS 项目的 xib,想跑路。
· 228 天前 · 3912 次点击
项目不小,以前别人做的,基本上一个 controller 配一个 xib 。招我进来时说会重写,还有个在华为干了十几年懂底层的工程师带项目。
现在 3 个月了,大神不来了,到今天代码也不重写,在原来恶心代码的基础上改。。我好烦。
吃完饭,提辞职。
61 回复 &| &直到
23:21:24 +08:00
& &228 天前
基本职业素养,自己接的项目,含泪也要改完再走。
& &228 天前
用 xib 做有问题?
& &228 天前
@ 我就在这提供劳动,吃口饭。说其他的是多余的。
& &228 天前
@ 哦,我没交待清楚,原来的 xib 没有适配 iphone6 和 iphone6p 。所有控件按 iphone5s 尺寸写死。。
& &228 天前
@ 用 autolayout 啊,他应该已经适配好了, xib 的大小都是根据 ip5 来的
& &228 天前
那你就把所有用到具体尺寸的地方,比如 320 ,全部搜一遍改。我都没用 xib ,都纯代码写的
& &228 天前
@ 不用 xib 我们还是朋友。
& &228 天前
@ 原来用的 autoResize 啊。最坏的情况了。。
& &228 天前
同病相怜,改老系统改的想吐
& &228 天前
@ 祖传代码
& &228 天前
@ 你怎么不跑路?
& &228 天前
& &228 天前
@ 项目进度又不是我定。我想重写也不是我说了算的。
& &228 天前
& &228 天前
呃...用 xib 有什么坏处吗?求科普...
& &228 天前
有需求要支持 6 与 6+,
那就只有一个页面一个页面改了。老板不可能不给你时间改吧。
& &228 天前
用 xib 有问题吗,约束不要用像素用比例啊,我适配的好好的。
我现在稍微复杂一点的 view 基本都用 xib.
动态的,带效果的采用代码写
& &228 天前
@ 你看看我后续的回复。
& &228 天前
@ 我只能说,不要用。。
& &228 天前
一天搞定的路过, xib 数量不低于 50 个。
& &228 天前
xib+AutoLayout+SizeClass 感觉还是不错的,当然 storyboard 组合起来更棒了:)
不过要是出现一个 storyboard 里面几十个 VC ,那也是要醉的。
& &228 天前
& &228 天前
没有用 autolayout 和是不是用 xib 写的没什么关系吧。
& &228 天前
工作嘛,本来就是收钱干活,难搞也要搞啊
& &228 天前
就正常的处理,我当时也以为会很麻烦,结果发现适配起来挺轻松的。
& &228 天前
@ 我还以为你是全部 add missing Constraint
& &228 天前
全 xib 也不是坏事啊,怕就怕一会 xib 一会 storyboard 一会手写。。。
这才要命
& &228 天前
辞职不批准,非常蛋疼
& &228 天前
3 个月,感觉多少个也够改完了```
& &228 天前
招我呀··专注重构 20 年~~XD
& &228 天前
好像你可以强走, 给上司发离职邮件, 说明原因, 说明一个月后不再来上班, 然后你就有了法律依据, 完成了离职通知的义务, 一个月之后不再来公司就好. 不过这个我没试过, 这是听人说这样符合劳动法规定
& &228 天前
@ 楼主在哪里工作?
& &228 天前
@ 靠,你是大神,我认识你。
& &228 天前
@ 强走肯定可以啊,算了,和我谈了半天,忍了。。拉不下脸
& &228 天前
& &228 天前
一直想问你头像是谁
& &228 天前
xib storyboard 我喜欢,哈哈。
& &228 天前
欢迎跳槽到我司 邮箱: xream at newbee.vc
& &228 天前
@ 我是你的 twitter 粉丝,你这么一说我好激动。。
& &228 天前
@ hhh 你的 twitter id 是?
& &228 天前
方案 1. 跟 boss 说明情况,强调重构的好处和不重构的问题的严重性,重点是“不重构会拖慢长久进度”,如果 boss 不相信,可以让他自己找信得过的人来做评估。
方案 2. 自己偷偷重写(对,是重写,或者说大重构),如果你想的开,其实是你自己以后会省事。
方案 3 : quit
我也遇到你这种情况,我当时是采取的方案 2 ,因为是接收的别人的项目,那个人也还在公司,我是不想让人家太难看,就没说
& &228 天前
xib 只有在被非常良好的构建,且全局风格保持一致的时候才能体现他的好。
稍有点问题改起来就是噩梦。
& &228 天前
@ tuoxie 我也是你的 twitter 粉丝,哈哈
& &228 天前
@ 推号: eighty_cent 晚上发简历
& &228 天前
@ 阿隆·罗杰斯
& &228 天前
@ 是不是收到过我的骚扰广告?啊哈哈哈哈哈哈哈···
& &228 天前
这种情况, xib 比代码 setFrame 好改
& &228 天前
@ 还好还好,我还以为你接了我上家公司的坑...
& &227 天前
@ 你推号什么
& &227 天前
这种项目一页页的翻版确实是吐血。
如果可能最好找一大拨人改,每人改一页。
还有一种办法是,如果界面不复杂,干脆代码手写一套布局,全部用 masonry 。人多,就算再复杂,每人一页,折腾起来也很快。
& &227 天前
@ eighty_cent
& &227 天前
和楼主经历类似,先在原代码上改到吐血,后直接花了一个月直接 storyboard 重写了。
主要是我工作事少点,项目也比较小。
& &227 天前
当时公司为了能快速出第一版 app 里面都是 xib ……
一个 controller 配一个 xib ,一个 cell 配一个 xib
最后抽时间把所有的 xib 全部去掉了!没错,是全部!
& &227 天前 via iPhone
& &227 天前
借此机会好好学学 autolayout 呗,,做技术不就这样吗,不断的学习,有些时候用 xib 确实方便很多。
& &227 天前
我擦 写死的 xib 适配 iPhone6/plus 不要太简单
楼主你能力不适应这份工作
& &227 天前
@ 你不懂。
& &227 天前
遇到自己实在看不下去的代码,如果打算久留,我都会推倒重做。。。
PS: XIB 是无辜的。。。
& &227 天前
楼主一个人扛么。。赶紧跑吧
& &227 天前
这还好吧,要是全代码写的而且坐标都写死,你会更崩溃的
& &226 天前
debug 和填坑是程序员基本能力
11 年入行 从 13 年开始接触 xib 到现在 xib +autolayout 和手写约束混编 有啥不懂的?
现在让我去一个个 setframe 我才不回去干
xib 能解决 90%适配问题 解决调试 UI 时间那更是多了去了
& · & 1037 人在线 & 最高记录 1847 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.7.3 · 67ms · UTC 10:58 · PVG 18:58 · LAX 03:58 · JFK 06:58? Do have faith in what you're doing.xib上的控件 拖拽关联,还是报错,有没有好心人帮帮我_百度知道
xib上的控件 拖拽关联,还是报错,有没有好心人帮帮我
没有问题。.h&百度了好多, nonatomic) IBOutlet UILabel *myP@property (,前面有小圈:UITableViewCellSelectionStyleGray];创建;
[cell setSelectionSMyitemlayout:0];#import &-(UILabel*)getPrice.view addSubview:];UIKit/@end显示已经连接;-(UIImageView*)getPic:nil options, reason,还是不知道问题在哪:forUndefinedKNSObject 0x7b129e50&gt,拖拽关联就有问题;NSUnknownKeyException&#39.&#39, nonatomic) IBOutlet UIImageView *myP
Myitemlayout* cell = [array objectAtI[&lt:cell];items_cell&quot, nonatomic) IBOutlet UILabel *myTitle.h文件#import & owner,报错;@interface M setValue: '@property (weak: UITableViewCell@property (weak, Terminating app due to uncaught exception &#39,当去掉关联空间时。;-(UILabel*)getTitle:@&quot,
NSArray *array = [[NSBundle mainBundle] loadNibNamed.h&gt: this class is not key value coding-compliant for the key myPic,有没有好心人;UIKit:nil]
提问者采纳
@property (weak, nonatomic) IBOutlet UIImageView *myP-(UIImageView*)getP名字不一致吧
谢谢 已经解决了 一个地方没加class
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁使用Xib要注意的一些问题
使用Xib要注意的一些问题
发布时间: 19:01:24
编辑:www.fx114.net
本篇文章主要介绍了"使用Xib要注意的一些问题",主要涉及到使用Xib要注意的一些问题方面的内容,对于使用Xib要注意的一些问题感兴趣的同学可以参考一下。
1、运行程序后,模拟器上不是按Xib上的UI显示的
今天开始使用Xib,奇怪地发现在Xib上布好的UI局,运行起来在模拟器上不是按Xib上的UI显示的,有些控件被另一些覆盖了。
解决方案是:第一步:选中目标 &.xib&文件。选取右边最上面那排的第一个像A4纸一样的图标,然后在下面找到 &Use Autolayout&,将它前面的&钩&去掉。如图所示:
第二步:选中目标 &.xib&文件。选取右边最上面那排的第四个像人头一样的图标,然后在&Simulated Metrics& -------& 选中“Size”----------& 将它设置为“Retina 3.5 Full Screen”。如图所示
做完上面两步,模拟器上运行的结果就和Xib上布的局一样了。
2、xib 怎样加载到一个UIViewController上面?
有两种做法:方法一,在建文件时,选上&With XIB for user interface&,这个时候的XIB文件名和.h .m 的文件名一致,只是后缀名不一样。见下图:
方法二,自己单独新建一个XIB文件。“User Interface” -------& &View& ---------& &next&。见下图:
“next”后选iPhone,点击&next&,为文件起名,注意千万不要加&.xib&。
但是第二种方法创建的.xib没有加到UIViewController上,按下图所示,选中&.xib&文件 ------& 选中&File’s Owner &&(一定要选它呀) &&------&选取右边最上面那排的第三个图标
----------& 找到Custom Class --------&Class 里面写上要关联的 文件名。
3、如何从一个界面推到另外一个界面?
//因为是用xib,所以要用initWithNibName:这个方法,后面接xib的文件名SecViewController。注意不能写成SecViewController.xib,写成
XXX.xib 就找不到了
在第二步中,如果是用第一种方法创建的 Xib 文件,就用下面这条语句
& &SecViewController * secCtrl = [[SecViewControlleralloc]
initWithNibName:@&SecViewController&bundle:nil];
在第二步中,如果是用第二种方法创建的 Xib 文件,就用下面这条语句
& &SecViewController * secCtrl = [[SecViewController
initWithNibName:@&WJFirstView&
bundle:nil];
&以上两条语句二选一 &
(如果没有UINavigationController,那么只能用 &presentViewController:&这个方法来推界面,如果有UINavigationController,用
[self.navigationController
pushViewController:secCtrl&animated:YES];
presentViewController:secCtrl animated:YES
completion:^{
本文标题:
本页链接:> xib中下面拖的控件为什么程序执行的时候看不到啊view设置的背景色也没用
xib中下面拖的控件为什么程序执行的时候看不到啊view设置的背景色也没用
speculate & &
发布时间: & &
浏览:8 & &
回复:0 & &
悬赏:0.0希赛币
xib中上面拖的控件为什么程序执行的时候看不到啊,view设置的背景色也没用?本帖最后由 gscool 于
08:12:28 编辑
我在storyboard中有一个ViewController(暂且命名为FVc),这个上面我用到了两个view,这两个view我定义了两个UIViewController,并且这两个UIViewController与xib文件进行了关联,这两个UIViewController暂且命名为AVc和BVc,我在Avc和BVc对应的xib中,在view上都增加了几个UILable,然后在FVc的viewDidLoad方法中把AVc和BVc中的view作为subview增加了,但是运行的时候AVc中的控件能现实,BVc中的就不显示,这是怎么回事?
部分代码如下,望大神指教啊!
  -&(void)viewDidLoad
&&&&[super&viewDidLoad];
&&&&if(AVc&==&nil)
&&&&&&&&AVc&=&[[AVCViewController&alloc]init];&&&&&&
&&&&[self.view&addSubview:AVc.view];
&&&&&if(BVc&==&nil)
&&&&&&&&BVc&=&[[BVCViewController&alloc]init];&&&&&&
&&&&[self.view&addSubview:BVc.view];
  -(id)init
&&&&if(self&=&[super&init])
&&&&&&&&self.view.backgroundColor&=&[UIColor&brownColor];
&&&&&&&&//NSLog(@"frame.width=%f&frame.height=%f",self.view.frame.size.width,&self.view.frame.size.height);
&&&&&&&&self.view.frame&=&CGRectMake(0,0,200,self.view.frame.size.height);
  -(id)init
&&&&if(self&=&[super&init])
&&&&&&&&self.view.backgroundColor&=&[UIColor&brownColor];&//这句如果加上的话能改变颜色,但是如果去掉直接在xib中给view的颜色改变一下,就看不到
&&&&&&&&//NSLog(@"frame.width=%f&frame.height=%f",self.view.frame.size.width,&self.view.frame.size.height);
&&&&&&&&self.view.frame&=&CGRectMake(201,0,self.view.frame.size.width&-&1,self.view.frame.size.height);
&&&&return&
BVc.view这块区域显示的都是FVc.view的颜色,不显示BVc.View的颜色,而且上面的UILable也不显示,AVc.view的区域就没问题。如果&你用&IBout&什么的声明的话,你就不需要&在&ViewDIdLoad&继续去&alloc&和init&一个新的类了。
你应当&在ViewController&init&的方法中,做一些AddSubView的操作。
我想,同一个类别的ViewController,你生成了2次,也就是有2个同类别的ViewController,一个你标识到了XIB,然后ViewDidLoad的时候,并没有&对应的AddSUbView到你标识的ViewController,而是标识到了新生成的ViewController上。自己顶,求助啊为什么用storyboard呢?&4.3都跑不起来
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&

我要回帖

更多关于 qq莫名其妙多好友 的文章

 

随机推荐