将xib放在UIView控件iphone中
Posted
技术标签:
【中文标题】将xib放在UIView控件iphone中【英文标题】:place xib in UIView control iphone 【发布时间】:2011-07-07 19:46:18 【问题描述】:我知道如何在“主”视图控制器中放置一个 nib 文件:
当我执行此方法时,将显示一个新的 nib 文件。
是否可以将该 nib 文件放在 UIView 控制器中?
我想将该 nib 文件放在该视图控制器中,而不是主视图中。我怎么能那样做?
编辑:
我试着做你提到的保罗我不知道我做错了什么。无论如何,这就是我所做的:
我用你提到的方法和属性创建了另一个视图控制器。
我将IBoutlet UIView *exampleView
连接到基本视图:
然后从这里我迷路了,我不知道在哪里放置其他方法。我想将该 exampleView 放入:
那个观点。
我尝试将它们放在 pgBackground.m 中,但它不起作用。我想把它们放在一个 IBaction 中,这样我就可以通过一个按钮的内部事件来加载它。
【问题讨论】:
【参考方案1】:我设法在 uiview 控件中放置了一个 nib 文件,但我遇到的问题是,如果设备旋转,子视图将不会旋转。我目前正在研究解决方案,但到目前为止here is a question 可以向您展示如何将视图从另一个 nib 文件添加到 uiview 控件。
【讨论】:
【参考方案2】:如果我关注,我认为您需要:
创建一个UIView
关联xib 的子类
ExampleView.h
ExampleView.m
ExampleView.xib
设置一个属性以包含视图层次结构(您想在界面构建器中连接的所有内容)
ExampleView.h
@property (nonatomic, retain) IBOutlet UIView *exampleView;
ExampleView.m
@synthesize exampleView = _exampleView;
在ExampleView.m
你需要添加:
- (void)awakeFromNib
[super awakeFromNib];
[[NSBundle mainBundle] loadNibNamed:@"ExampleView" owner:self options:nil];
[self addSubview:self.exampleView];
您从 nib 使用 awake,因此您可以在 Interface Builder 中使用这个子类。如果您还想在代码中实例化它,则需要在 init 方法中连接 xib。在这种情况下,我可能会像这样提取笔尖加载:
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
[self loadNibIntoView];
return self;
- (void)awakeFromNib
[super awakeFromNib];
[self loadNibIntoView];
- (void)loadNibIntoView
[[NSBundle mainBundle] loadNibNamed:@"ExampleView" owner:self options:nil];
[self addSubview:self.exampleView];
在 ExampleView.xib 文件中,确保将您的 IBOutlet UIView *exampleView
连接到基本视图。
现在在您想要使用自定义视图的任何 xib 文件中,只需将其拖到窗口中并将类更改为您的子类。这就是我让它工作的方式。我期待一些人提出改进建议。
【讨论】:
Paul 抱歉,我是 Objective-c 的新手,非常感谢您的帮助。看看我正在处理的编辑,问题应该很快就会更新。【参考方案3】:你能告诉我你想做什么吗?如果你想改变方向,那么首先你在 app 委托文件中声明一个 bool en 类型变量,然后在 app delegate.m 文件中定义如果方向改变,然后检测并将布尔类型变量设置为 true 用于横向和 false 用于纵向。此过程用于接下来的所有视图。并且您希望您在主视图控制器中执行 nib,然后您有两种方法,一种是动态的,另一种是由界面生成器执行的。在界面构建器中选择导航控制器并放入主窗口文件。之后,您可以通过按 cmd+4 更改导航控制器视图的视图,然后选择您要首先显示的视图。
【讨论】:
【参考方案4】:-(IBAction)btnSubmit_click
UIDeviceOrientation orientation = [[UIDevice currentDevice]orientation];
if (orientation == UIDeviceOrientationLandscapeLeft)
// Do stuff
else if (orientation == UIDeviceOrientationLandscapeRight)
// Do stuff like [self setCordinateLandscape];
-(BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation
// Return YES for supported orientations
//set as per requirements ====>>
return (interfaceOrientation == UIDeviceOrientationLandscapeRight);
// Or return TRUE;
【讨论】:
以上是关于将xib放在UIView控件iphone中的主要内容,如果未能解决你的问题,请参考以下文章