我有3个UIViews
(让我们称之为HeaderView
,MainView
和FooterView
)与我UIButtons
,Label
等在各自的xibs
中设置。我已通过相应IBOutlets
文件中的.h
连接元素。在每个.m
文件'drawRect
中,我编写了一些设置说明,例如设置文本的颜色,设置UIButton
的图像等。
我有一个UIViewController
,它是通过按钮点击事件呈现的。在此UIViewController
中,我为指定框架的3 loadNib
调用了UIViews
个方法。
我面临的问题是没有显示任何元素,例如,UIViews
(HeaderView
),button
和{{1}之一}已显示(通过label
检查),但ViewDebugging
或images
由于某种原因未设置。
如果我没有正确解释,我很抱歉,但我尝试为texts
和addSubview
拨打bringSubviewToFront
和UIButton
Label
以及它只是没有出现。任何帮助都会很棒。如果有人能指引我朝着正确的方向前进,那将会非常有帮助。我一直很沮丧地坚持这一点,并且对于我应该做的事情感到很遗憾。
非常感谢您的帮助!
答案 0 :(得分:0)
检查您使用自动布局类的天气。
如果是,请尝试禁用它们。
在ViewDidAppear委托方法中添加视图以添加视图
如果您不想禁用尺寸类,请尝试按下按钮添加..
实际上,大小类比ViewDidAppear之前的动态CGRectMake帧具有更高的优先级。在ViewDidAppear优先级转到帧之后。
。请试试这个并回复是否有效。
Thanks
答案 1 :(得分:0)
您必须考虑何时从xib创建视图并将它们添加到视图层次结构中。
通常,您必须执行以下操作:
@implementation MYViewController
{
UIView *_headerView;
UIView *_mainView;
UIView *_footerView;
}
- (void)viewDidLoad
{
[super viewDidLoad];
_headerView = [[[UINib nibWithNibName:@"HeaderView" bundle:nil] instantiateWithOwner:nil options:nil] firstObject];
_mainView = [[[UINib nibWithNibName:@"MainView" bundle:nil] instantiateWithOwner:nil options:nil] firstObject];
_footerView = [[[UINib nibWithNibName:@"FooterView" bundle:nil] instantiateWithOwner:nil options:nil] firstObject];
_headerView.translatesAutoresizingMaskIntoConstraints = NO;
_mainView.translatesAutoresizingMaskIntoConstraints = NO;
_footerView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:_headerView];
[self.view addSubview:_mainView];
[self.view addSubview:_footerView];
// Set here autolayouts for _headerView, _mainView and _footerView
}
@end
此外,您可以将视图配置为IBOutlets并使用xib的文件所有者来分配视图(通过将标题,主页脚和页脚视图的每个XIB的文件所有者设置为MYViewController类并将视图分配给相应文件的所有者IBOutlet属性):
@implementation MYViewController
{
IBOutlet UIView *_headerView;
IBOutlet UIView *_mainView;
IBOutlet UIView *_footerView;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[[UINib nibWithNibName:@"HeaderView" bundle:nil] instantiateWithOwner:self options:nil];
[[UINib nibWithNibName:@"MainView" bundle:nil] instantiateWithOwner:self options:nil];
[[UINib nibWithNibName:@"FooterView" bundle:nil] instantiateWithOwner:self options:nil];
_headerView.translatesAutoresizingMaskIntoConstraints = NO;
_mainView.translatesAutoresizingMaskIntoConstraints = NO;
_footerView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:_headerView];
[self.view addSubview:_mainView];
[self.view addSubview:_footerView];
// Set here autolayouts for _headerView, _mainView and _footerView
}
@end
另外,检查你的autolayout / autoresize实现并在你的视图上添加一些NSLog标志(在方法-awakeFromNib
上)以检查是否加载了视图。