2012-09-27 102 views
0

新的目标C和IOS,但我没有任何运气找到如何从编程创建的UIViewController加载界面生成器创建的视图。有人能告诉我你是怎么做到的吗?以编程方式创建的UIViewController加载接口生成器view.xib文件

我能够从一个没有使用界面生成器的参考项目开始,所以我没有任何故事板。我以编程方式成功加载了视图,但希望能够加载一些由界面构建器创建的视图。

更多详细信息:我有2个视图控制器A和B.我目前在A.我点击一个按钮,并在该按钮处理程序我加载Viewcontroller B是这样的: self.viewControllerB = [[ViewControllerB alloc] init ]。 [self.navigationController pushViewController:viewControllerB animated:YES]

我手动创建了一个带有.m和.h的ViewB。如果我使用一个initWithFrame,其中我定义了一堆控件并以编程方式进行布局,我可以按照上面所述成功调用它。

我向项目添加了一个新文件,这是一个UIView,它将它引入到构建器中。将一个TableView拖放到视图上,现在我只想看到这个负载。 我命名为厦门国际银行ViewB.xib,我的等级设置为ViewB像下面所示(在回答1)知情同意

+0

你试过调用实例方法: - (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle? –

+0

是的,除非我对nibName做了错误的处理。我如何设置和了解nibName是什么? – Kazern

+0

Nib名称是创建它时命名的任何名称。 –

回答

1

每当你需要从使用的.xib加载一个观点是:

首先制作一个笔尖在界面生成器视图,并确保其自定义类设置到您的视图的课,看到的景象:

enter image description here

,然后加载它在你的代码是这样的:

MyCustomNibView *myView; 
NSArray *topLevelItems = [[NSBundle mainBundle] loadNibNamed:@"MyCustomNibView" owner:nil options:nil]; 

for (id view in topLevelItems) { 
    if ([view isKindOfClass:[MyCustomNibView class]]) { 
     myView = (MyCustomNibView *)view; 
     break; 
    } 
} 
+0

上面的例子代码在哪里?这是在'MyCustomNibView'对应的.m和.h文件中,还是那些不需要的。这是直接在视图控制器?如果在视图控制器中它如何识别没有.h引用的'MyCustomNibView'?我认为在上面的图片中,类名称需要是'MyCustomNibView'(在这个例子中)。 – Kazern

+0

@Kazern你需要一个'MyCustomNibView.h','MyCustomNibView.m'和一个'MyCustomNibView.xib'来定义你的视图及其成员。在图片中,如你所猜,这个类应该是'MyCustomNibView'。最后,在您的视图控制器中导入.h,并在您想要加载视图时使用上面的代码。它可以在'viewDidLoad'或某个按钮点击或...等。使用上面的代码获得视图后,只需将其添加到视图层次结构中即可。 – iska

相关问题