Objective C 语言 UIViewController基本使用

Objective-C阿木 发布于 15 天前 6 次阅读


Objective-C 语言中 UIViewController 的基本使用指南

在 iOS 开发中,`UIViewController` 是一个非常重要的类,它是所有视图控制器的基础。`UIViewController` 负责管理视图的生命周期,处理用户交互,以及与视图层进行交互。本文将围绕 `UIViewController` 的基本使用展开,包括其创建、生命周期、视图管理以及与用户交互等方面。

一、创建 UIViewController

在 Objective-C 中,创建 `UIViewController` 有多种方式,以下是一些常见的方法:

1. 使用 Storyboard

Storyboard 是一种可视化工具,可以用来设计用户界面。在 Storyboard 中创建 `UIViewController` 的步骤如下:

1. 打开 Xcode,创建一个新的项目。

2. 在项目导航器中,选择 Storyboard 文件。

3. 在 Storyboard 视图中,从 Object Library 中拖拽一个 `UIViewController` 到画布上。

4. 双击该控制器,在弹出的窗口中设置其类名为 `ViewController`。

5. 在 Identity Inspector 中,将 Class 设置为 `UIViewController`。

2. 使用代码创建

除了 Storyboard,我们还可以通过代码来创建 `UIViewController`:

objective-c

UIViewController viewController = [[UIViewController alloc] init];


viewController.title = @"My ViewController";


3. 使用 nib 文件

nib 文件是一种 XML 格式的文件,可以用来定义用户界面。以下是如何使用 nib 文件创建 `UIViewController` 的示例:

objective-c

NSBundle bundle = [NSBundle mainBundle];


NSBundle nibBundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"ViewController" ofType:@"nib"]];


UINib nib = [nibBundle loadNibNamed:@"ViewController" owner:nil options:nil];


UIViewController viewController = [nib objectAtIndex:0];


二、UIViewController 生命周期

`UIViewController` 的生命周期包括以下几个阶段:

1. 初始化

当创建一个 `UIViewController` 实例时,会调用其初始化方法。在 Objective-C 中,通常使用 `init` 方法来初始化 `UIViewController`。

2. 加载视图

当 `UIViewController` 被加载到内存中时,会调用 `loadView` 方法。如果视图尚未加载,则会调用 `loadView` 方法来加载视图。

3. 视图加载完成

当视图加载完成后,会调用 `viewDidLoad` 方法。在这个方法中,可以执行一些初始化操作,例如设置视图的背景颜色、添加子视图等。

4. 视图显示

当 `UIViewController` 被添加到视图层次结构中时,会调用 `viewWillAppear` 方法。在这个方法中,可以执行一些在视图即将显示时的操作。

5. 视图即将消失

当 `UIViewController` 被从视图层次结构中移除时,会调用 `viewWillDisappear` 方法。在这个方法中,可以执行一些在视图即将消失时的操作。

6. 视图消失

当 `UIViewController` 的视图完全从屏幕上消失时,会调用 `viewDidDisappear` 方法。

7. 视图控制器销毁

当 `UIViewController` 不再需要时,会调用 `dealloc` 方法来释放资源。

三、视图管理

`UIViewController` 负责管理其视图的生命周期。以下是一些与视图管理相关的常用方法:

1. 视图加载

objective-c

- (void)loadView {


self.view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];


[self.view setBackgroundColor:[UIColor whiteColor]];


}


2. 视图布局

objective-c

- (void)viewDidLoad {


[super viewDidLoad];


UIView label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 200, 50)];


label.text = @"Hello, World!";


[self.view addSubview:label];


}


3. 视图控制器嵌套

在 iOS 8 及以上版本中,可以使用 `viewController` 属性来嵌套视图控制器。

objective-c

- (void)viewDidLoad {


[super viewDidLoad];


ViewController nestedViewController = [[ViewController alloc] init];


[self addChildViewController:nestedViewController];


[nestedViewController.view setFrame:CGRectMake(0, 0, 320, 200)];


[self.view addSubview:nestedViewController.view];


[nestedViewController didMoveToParentViewController:self];


}


四、与用户交互

`UIViewController` 提供了多种方法来处理用户交互,以下是一些常用的方法:

1. 触摸事件

objective-c

- (void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event {


UITouch touch = [touches anyObject];


CGPoint touchPoint = [touch locationInView:self.view];


// 处理触摸事件


}


2. 按钮点击

objective-c

UIButton button = [[UIButton alloc] initWithFrame:CGRectMake(100, 200, 200, 50)];


[button setTitle:@"Click Me" forState:UIControlStateNormal];


[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];


[self.view addSubview:button];

- (void)buttonClicked:(UIButton )sender {


// 处理按钮点击事件


}


3. 滚动视图

objective-c

UIScrollView scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];


[scrollView setScrollEnabled:YES];


[self.view addSubview:scrollView];


五、总结

本文介绍了 Objective-C 中 `UIViewController` 的基本使用,包括创建、生命周期、视图管理以及与用户交互等方面。通过学习这些内容,开发者可以更好地掌握 iOS 开发中的视图控制器,从而构建出更加丰富和交互性强的应用程序。