Iphone MVC中的ViewController,在XCode中
一个简短的问题 我最近一直在尝试关闭XCode,并试图理解视图控制器,虽然我了解了它的本质,但有一件事我没有看到,那就是视图控制器类对象的实例化位置。它本质上是一个类,因此必须实例化一个对象才能向其发送消息 这让我有些挠头Iphone MVC中的ViewController,在XCode中,iphone,xcode,model-view-controller,controller,Iphone,Xcode,Model View Controller,Controller,一个简短的问题 我最近一直在尝试关闭XCode,并试图理解视图控制器,虽然我了解了它的本质,但有一件事我没有看到,那就是视图控制器类对象的实例化位置。它本质上是一个类,因此必须实例化一个对象才能向其发送消息 这让我有些挠头 多谢 它在需要显示时被实例化。谢谢你 例如,如果要在按下按钮时在导航堆栈上显示新视图 -(IBAction)buttonClicked:(id)sender{ /* Create VC here */ YourViewController *controlle
多谢 它在需要显示时被实例化。谢谢你 例如,如果要在按下按钮时在导航堆栈上显示新视图
-(IBAction)buttonClicked:(id)sender{
/* Create VC here */
YourViewController *controller = [[YourViewController alloc]initWithNibName:@"ViewName"];
/* Push */
[self.navigationController pushViewController:controller animated:YES];
/* Let go since you don't have control over it anymore. */
[controller release];
}
我认为,在大多数情况下,这样做通常比在内存中保存一个实例更好,以防止过多的内存使用
现在(假设iOS5已经退出NDA,现在大部分内容已经在今天发布),您可以在XCode中使用故事板来为您处理所有这一切。视图控制器在其init函数中实例化,指定的初始值设定项如下:
-(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
{
if( (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) )
{
// Custom initialization
}
return self;
}
正如您可能已经在苹果的一些示例或您浏览过的任何其他源代码中注意到的,您可能已经看到一行类似于
MyViewController* viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
这是视图控制器实例化的位置/时间。您会注意到,视图控制器有一个UIView类型的成员对象,名为view。正是它被添加到窗口或视图中,而该视图就是其中的一部分。
创建视图控制器是为了处理与此视图相关的消息。都说清楚了