创建UIViewController

转自:http://www.aiw3.com/iphone/06081019.html


UIViewController实例提供了极佳的核心视图管理。它们只是没有提供实际视图。可以根据自己的需要创建一个,或者通过LoadView方法将它安装到视图控制器中。每一个UIView- ControllerSH子类都实现了此方法,可在其中将控制器连接到视图实例。需要执行两项任务;初始化视图,然后将它连接到控制器。

    ·初始化内容视图,并调整其大小,方法是调用initWithFrame:并使用[[UIScreenmainScreen]applicationFrame]作为其参数。这将返回应用程序的标准范围。数学方法会自动考虑任何屏幕导航栏和选项卡栏。第1章中的HelloWorld示例提供了一个简单的实际布局。

    ·将视图连接到控制器,方法是指定一个selfviewUIView实例。在LoadView方法中完成此操作(例如,selfview=contentVleW)

    在操作专用控制器时,要始终确保从子视图中调用于类版本的方法([superloadView])。这将确保子视图继承父视图的布局行为以及类方法和变量。其他关键的UIViewController方法包括以下几个。

    1init

    使用类的init方法设置视图控制器的标题和其他需要在实际使用类之前设置的特性。要使标题与应用程序名称保持一致,可以为([[NSBundle mainBundl  infoDictionary] objectForKey@CFBundleName]指定selftitle。这将返回在束的Info.plist文件中定义的名称。

    uIView不同,UIViewController实例是一个抽象的对象,不在物理屏幕上显示。不要像操作普通的UIView那样设置一个边框。UIviews使用inltWithFrame:,UIViewControllers使用init。在正确命名的loadView方法中设置任何视图边框。

    2shouldAutorotateToInterfaceOrientation

    此方法返回YES或者NO,这取决于是否希望在程序中支持自动旋转。返回YES时,视图控制器使用若干个标记确定自动旋转的方式。代码清单3-1显示了Loa~View方法中一段典型的代码,它指定子视图应该自动在垂直和水平方向重新调整大小。

    3viewDidADDear:和vieWDidDisappear

    每次UIViewController视图进入屏幕或离开屏幕时都会调用这两个方法——通常因为视图之间的导航。使用这些方法刷新视图,以反映当前数据状态并更新存储的数据。通过这些方法,可以声明或放弃文本元素的首要响应者状态,根据需要删除文本选择,或执行任何其他需要在将控制返回给用户之前完成的簿记。

    4didRotateFromInterfaceOrlentatlon

    通过在UIViewController子类中实现此方法可以获取方向更改。通过此方法,可以响应新的方向并传递之前的方向(如果你希望根据所涉及的更改执行特定的动画类型)。从一个方向移动到另一个方向,而不经过预期的中间阶段,这是完全可能的,因此也避免了假设。我们使用传递给此方法的实际数据。

     说明  苹果公司已承诺在未来某个时刻在SDK中分别提供对横向和纵向视图的支持。在撰写本书时,此功能尚未实现。当方向发生改变时,需要重新调整屏幕。要强制应用程序进入横向模式,  就对shouldAutorotateToInterfaceOrlentation:返回NO,调用 applicationDidFinishLaunching:方法中的[[UIAppllCatl012 shareclApplication] setStatusBarOrlentationUIInterfaceOrientationLandscapeRight),并在Ubfo.plist文件中将UIInterfaceOrientation设置为UIInterfaceOrientationLandscapeRight


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值