将xib放在UIView控制iphone中

时间:2011-07-07 19:46:18

标签: iphone objective-c ipad uiview nib

我知道如何在“主”视图控制器中放置一个nib文件:

enter image description here

当我执行此方法时,将显示一个新的nib文件。

是否可以将该nib文件放在UIView控制器中?

enter image description here

我想将该nib文件放在该视图控制器中,而不是放在主视图中。我怎么能这样做?


编辑:

我试着做你提到的保罗我不知道我做错了什么。无论如何,这就是我所做的:

我使用您提到的方法创建了另一个视图控制器。

enter image description here

我将IBoutlet UIView *exampleView连接到基本视图: enter image description here

然后从这里我迷路了我不知道在哪里放置其他方法。我想将exampleView放入:

enter image description here

那个观点。

我已经尝试将它们放在pgBackground.m中,但它不起作用。我想把它们放在一个IBaction中,这样我就可以通过按钮在内部事件中加载它。

4 个答案:

答案 0 :(得分:1)

我设法将一个nib文件放在uiview控件中,但我遇到的问题是如果设备没有旋转子视图。我目前正在研究解决方案,但到目前为止here is a question可以向您展示如何将视图从另一个nib文件添加到uiview控件。

答案 1 :(得分:0)

如果我遵循,我认为你需要:

创建一个带有关联xib的UIView子类

ExampleView.h
ExampleView.m
ExampleView.xib

设置一个属性以包含View层次结构(您希望在“界面”构建器中连接的所有内容)

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文件中,只需将其拖到窗口中,然后将类更改为子类。这就是我如何运作我期待有些人建议改进。

答案 2 :(得分:0)

- (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;

}

答案 3 :(得分:0)

你可以告诉我你想做什么吗?如果你想改变方向,那么首先你在app委托文件中声明一个bool en类型变量然后在app delegate.m文件中定义如果方向改变然后检测并使布尔类型变量为true,对于landscape而言为false。此过程用于下一个所有视图。你希望你在主视图控制器中执行nib然后你有两种方式,一种是动态的,另一种是接口构建器。在界面构建器中u选择导航控制器并放入主窗口文件。之后,按下cmd + 4更改导航控制器视图的视图,然后选择要首先显示的视图。