我想知道是否有人知道有任何好的在线资源/教程以编程方式创建视图和控制器,而不是通过界面构建器。我已经看过一切使用界面生成器和创建的笔尖,而IB是好,我想有(无论是现实的原因手工开发这些的选项,让这一切是如何结合在一起,而不是肤浅的一个很好的理解你可以通过拖放来获得一件事。)
我的背景是在java中,我发现使用界面构建器开发视图的速度很慢,令人沮丧,就像我有时用Java一样开发视图,即
此外,一旦我创建了一个视图,无论如何我可以将它添加到界面构建器中,以使其可用作另一个视图的子视图吗?
谢谢,维克
答案 0 :(得分:1)
Interface Builder方法创建“冻干”对象,当您从NIB初始化对象时,这些对象在运行时重新创建。它仍然执行相同的alloc
和init
内容,使用NSCoder
个对象将对象带入内存。
如果您希望拥有基于特定NIB的视图控制器,则可以覆盖默认的init方法,并根据该视图控制器的NIB启动它。例如:
@implementation MyViewController
-(id) init {
if (self = [super initWithNibName:@"MyViewController" bundle:nil]) {
//other setup stuff
}
return self;
}
当您想要显示MyViewController
时,您只需调用以下内容:
- (void) showMyViewController {
MyViewController *viewController = [[[MyViewController alloc] init] autorelease];
[self presentModalViewController:viewController animated:YES];
}
现在,如果您想手动而不是在Interface Builder中创建视图,则根本不需要更改-showMyViewController
方法。摆脱-init
覆盖,改为覆盖-loadView
的{{1}}方法以编程方式创建它:
MyViewController
此示例显示如何创建视图并向其添加按钮。如果您想保留对它的引用,请以与使用NIB(没有IBOutlet / IBActions)相同的方式声明它,并在分配时使用- (void) loadView {
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(320,460)];
self.view = view;
[view release];
//Create a button
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[myButton addTarget:self action:@selector(pressedButton) forControlEvents:UIControlEventTouchUpInside];
[myButton setTitle:@"Push Me!" forState:UIControlStateNormal];
myButton.frame = CGRectMake(100,230,80,44);
[self.view addSubview:myButton];
}
。例如,您的标题可能如下所示:
self
你的班级:
@interface MyViewController : UIViewController {
UIButton *myButton;
}
- (void) pressedButton;
@property (nonatomic, retain) UIButton *myButton;
@end
答案 1 :(得分:0)
几个月前,当我想在Emacs中进行所有iPhone开发时,我遇到了同样的问题。长话短说:我不再为iPhone开发了:)
我仍然建议您查看我的问题和一些有用的答案here。
答案 2 :(得分:0)
我通常不会过多地使用Interface builder来进行iPhone开发。通常我会在这样的代码中创建一个视图控制器
MyUIViewControllerSubclass *controller = [[MyUIViewControllerSubclass alloc] initWithNibName:nil bundle:nil];
controller.someProperty = myModel;
[self presentModalViewController:controller];
[controller release];
或者那些东西。通常我会创建一个UIViewController
的子类,这就是我布置视图等的地方。视图是UIView
的子类(Apple提供的内容类似于UIButton
等,或者我自己创建的内容)。如果您同时阅读了UIViewController
和UIView
,那么您应该对其工作原理有所了解。