我为不想使用故事板和 Interface Builder 的 iOS 开发者创建了这个教程。它使用了纯代码的方式实现了完整的苹果文档中的 “Hello World”。

在苹果的文档中:

当你运行时,在文本框中点击会显示一个系统提供的软键盘。输入您的名字,点击“Done”键关闭软键盘后,点击 Hello 按钮将看到在文本框和按钮之间的文本标签显示 “Hello, Your Name!“ 。

首先, 打开 Xcode 点击 “Create a new Xcode project” 。这里我的 Xcode 版本为 4.6。

使用 Empty Application 模版。

填写其余字段。 确保 “Use Automatic Reference Counting” 与 “Include Unit Tests” 已选中。 本教程中不使用 Core Data 。

就算我们选择了 “Empty Application” 模版, Xcode 仍然创建了一些默认的文件。 点击左边的文件浏览器中的 AppDelegate.m 打开此文件。

App Delegate 文件用于您的应用与操作系统沟通,它包括一些常用的方法。

夜狼
翻译于 昨天(9:47)

0人顶

顶 翻译的不错哦!

我们将主要处理 “application didFinishLaunchingWithOptions” ,它将在应用启动后调用。

如果你现在点击顶部左侧的 Run 按钮,你的应用将是一个空白屏幕。

您可能已经注意到一个警告:

"Application windows are expected to have a root view controller at the end of application launch".

不要担心, 我们马上会设置它,但是首先我们要创建一个 ViewController 类。点击 File, New, File…

在 Cocoa Touch 分类中选择 Objective-C class 并点击 Next 。

您可以自己选择一个用于您的类的名称,但确保在下面的子类设置中为 UIViewController 。 我为我的类命名为 “MainViewController”。 UIViewController 是一个 iOS 的基本类,它用于处理用户界面的相互影响。点击 Next 再点 Create。

您现在应该有包括基本代码的 MainViewController.m 与 MainViewController.h 文件,我们稍后来处理它们 - 先回到 AppDelegate.m 文件。

首先,确保你在文件头中导入了您的 MainViewController 类:

1 #import "AppDelegate.h"
2 #import "MainViewController.h"

接下来,看看 “application didFinishLaunching” 方法 - 它应该包含一些默认的匹配下面的代码:

1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
2 {
3     self.window = [[UIWindow alloc]
4 initWithFrame:[[UIScreen mainScreen] bounds]];
5     // Override point for customization after application launch.
6     self.window.backgroundColor = [UIColor whiteColor];
7     [self.window makeKeyAndVisible];
8     return YES;
9 }

这里就是我们设置 “root view controller” 属性 - 或在应用启动后要显示的视图的地方。

01 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
02 {
03     self.window = [[UIWindow alloc]
04     initWithFrame:[[UIScreen mainScreen] bounds]];
05      
06     // Override point for customization after application launch.
07     self.window.backgroundColor = [UIColor whiteColor];
08      
09     /* 
10         创建我们的视图控制器并设置它为窗口根视图控制器
11     */
12     MainViewController *viewController =
13     [[MainViewController alloc] init];
14      
15     self.window.rootViewController = viewController;
16      
17     [self.window makeKeyAndVisible];
18     return YES;
19 }

再次运行还是会看到一个空白屏幕,但是这一次警告消失了。在本教程的下一部分,我们将处理屏幕元素。

下一步是添加元素到用户界面 - 一个文件框,一个按钮和一个标签。

夜狼
翻译于 昨天(10:05)

0人顶

顶 翻译的不错哦!

1. 文件框

回到您的 MainViewController.m 文件。 与 app delegate 类似, 这里包括了 UIViewController 类的处理生命周期中不同位置的帮助方法。

首先我们需要为文本框与标签创建类属性。 创建一个属性允许在类中任意位置访问对象实例,而不是只在一个函数范围内。 我们需要用它来将文本框的内容设置到标签上。

私有属性可以在 MainViewController.m 文件的下面块内定义。

1 @interface MainViewController()
2 @end

所以我们可以添加下面的行:

1 @interface MainViewController()
2  
3 @property (nonatomic, strong) UITextField *textField;
4 @property (nonatomic, strong) UILabel *label;
5  
6 @end

您也许不太清楚 “nonatomic, strong” 的含义 - 简单的说它是用于内存管理。您可以   查看这里了解更多

现在找到 “viewDidLoad” 方法,它将在视图创建并加载到屏幕后执行 - 现在您应该看到如下:

1 - (void)viewDidLoad
2 {
3     [super viewDidLoad];
4     // Do any additional setup after loading the view.
5 }

现在创建文本框。使用 "self." 前缀引用我们之前创建的属性。

01 - (void)viewDidLoad
02 {
03     [super viewDidLoad];
04     // Do any additional setup after loading the view.
05      
06     // 创建文本框并设置位置与大小
07     self.textField = [[UITextField alloc]
08                               initWithFrame:
09                               CGRectMake(10.0f, 30.0f,
10                               300.0f, 30.0f)];
11      
12     // 改变文本框的边框样式让文本框可见
13     self.textField.borderStyle = UITextBorderStyleRoundedRect;
14      
15     /*
16       将文本框添加到主视图。
17       注意:UITextField 和其它一些 UI 类都是 UIView 的子类,这意味着它们可以添加到视图层次
18     */
19     [self.view addSubview:self.textField];
20      
21 }

如果您现在运行,应该可以看到在屏幕顶部显示了一个文本框。点击它将自动显示一个软键盘,我们还需要添加一些代码手动关闭软键盘。

夜狼
翻译于 昨天(10:22)

0人顶

顶 翻译的不错哦!

关键在 UITextField 的委托方法 “delegate method” 。 委托方法就像是为你的应用程序中的对象的辅助功能,有时可以帮助两个类之间的数据传递。 我们一般用于关闭软键盘的委托方法名为 “textFieldShouldReturn” , 它将在每次用户点击软键盘上的 “return” 按钮时调用。

有关委托方法的官方文档。您可以在 UITextFieldDelegate reference article 中查找“textFieldShouldReturn” 方法。

在 viewDidLoad 方法之后添加:

1 - (BOOL)textFieldShouldReturn:(UITextField *)textField {
2  
3 }

使用下面的代码关闭文本框的软键盘:

1 - (BOOL)textFieldShouldReturn:(UITextField *)textField {
2    // 告诉操作系统移除前置的软键盘
3    [textField resignFirstResponder];
4  
5    //returns NO. 加入一个换行字符
6    //文本框忽略
7    return NO;
8 }

让它工作我们还需要一些工作。回到 viewDidLoad 方法我们创建文本框的位置。在 alloc 与 init 的下一行加入:

1 self.textField.delegate = self;

这告诉应用执行当前类中的委托方法。

最后一件事是更新 MainViewController.h file. In the .h 文件, 找到下面这行:

1 @interface MainViewController : UIViewController

更改它为:

1 @interface MainViewController : UIViewController <UITextFieldDelegate>

这指明 MainViewController 实现了 UITextField 的委托方法。 现在运行 - 点击"return"按钮可以关闭软键盘了。

夜狼
翻译于 昨天(10:37)

0人顶

顶 翻译的不错哦!

2. 按钮

我们将在 viewDidLoad 方法中同样的创建标签。 从这行之后

1 [self.view addSubview:self.textField];

您可以与初始化文本框类似的方式(使用 alloc, initWithFrame 方法)初始化按钮,但因为我们只需要使用一个默认的按钮,所以这里我们对它有一些不同的处理。

01 // 初始化一个圆角样式的默认按钮
02 UIButton *button =
03     [UIButton buttonWithType:UIButtonTypeRoundedRect];
04  
05 // 设置按钮的位置与大小
06 button.frame = CGRectMake(110.0f, 200.0f, 100.0f, 30.0f);
07  
08 // 设置目标,行为与控件事件。
09 // 更多说明看后文
10 [button addTarget:self
11            action:@selector(buttonPressed)
12  forControlEvents:UIControlEventTouchUpInside];
13  
14 // 设置标题
15 [button setTitle:@"Press Me!" forState:UIControlStateNormal];
16  
17 // 将按钮添加到主视图
18 [self.view addSubview:button];

这需要照顾的大部分按钮的属性。 addTarget, action, forControlEvents 方法允许你定义一个在按钮按下后需要调用的函数。 target 用于接受动作消息的对象 - 在这里,按钮按下后与您调用下面的代码相同的效果:

1 [self buttonPressed];

使用 @selector() 块定义一个要在按钮按下时调用的函数名称 - 我们仍然需要实现它。

control event 指定动作消息发出的条件,苹果定义的 “UIControlEventTouchUpInside” 是最通常的点击。

现在我们可以创建一个空壳的 buttonPressed 函数。在创建好标签后我们再来添加实现。

在 viewDidLoad 与 textFieldShouldReturn 之间创建 buttonPressed 方法:

1 - (void)buttonPressed { }

我们在创建好标签后再回来。

夜狼
翻译于 昨天(10:52)

0人顶

顶 翻译的不错哦!

3. 标签

我将最简单的留到最后。我们将按下面的方式创建标签

1 [self.view addSubview:button]

label 的初始化和 textfield 非常类似,只需要三行:

1 self.label = [[UILabel alloc]
2     initWithFrame:CGRectMake(115.0f, 150.0f, 200.0f, 30.0f)];
3 self.label.text = @"Hello World!";
4 [self.view addSubview:self.label];

运行,您可以看到熟悉的 “Hello World!” 出现在您的按钮之上。

4. 改变标签文本

就一个事了,如果你早前已经创建了按键按下的外壳方法,我们只需要添加一行代码将文本框的内容显示到标签文本上。完成后的 buttonPressed:

1 - (void)buttonPressed {
2     self.label.text = self.textField.text;
3 }

完成!运行试试它吧。

查看完整代码在 Github.

转载于:https://www.cnblogs.com/shihao/archive/2013/04/18/3029024.html

你的第一个 iOS 应用程序: 100% 的编程方式相关推荐

  1. 【原创】第一个iOS应用程序

    摘要  第一个iOS应用程序,包括获取控件,绑定事件,设置属性等内容. iOS  Objective-C 目录[-] 第一章 窗口与应用程序 第二章 添加视图 2.1 从nib文件初始化视图 2.2 ...

  2. iOS 11开发教程(三)运行第一个iOS 11程序

    iOS 11开发教程(三)运行第一个iOS 11程序 运行iOS11程序 创建好项目之后,就可以运行这个项目中的程序了.单击运行按钮,如果程序没有任何问题的话,会看到如图1.6和1.7的运行效果. 图 ...

  3. Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序

    Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序 C#原本是用来编写Windows以及Windows Phone的应用程序.自从Xamarin问世后,C#的作用就发生了很大的变化. ...

  4. 用Adobe Flash Professional CS6创建一个iOS应用程序

    引用:http://news.9ria.com/2013/0104/25780.html 平板电脑和智能手机的迅速增长意味着将会有比以往任何时候都多的人使用移动设备来浏览在线内容.其结果就是,Web设 ...

  5. 制作第一个 iOS 应用程序

    介绍 本教程向您演示如何创建一个简单的iPhone应用程序.本文不打算对iPhone目前可用的特性作全面介绍,而是介绍一些技术,让您对基础开发过程有初步了解. 如果您刚开始使用Cocoa Touch进 ...

  6. 5个流水灯c语言程序,五种编程方式实现流水灯的单片机C程序

    <五种编程方式实现流水灯的单片机C程序>由会员分享,可在线阅读,更多相关<五种编程方式实现流水灯的单片机C程序(5页珍藏版)>请在人人文库网上搜索. 1.五种编程方式实现流水灯 ...

  7. 相机java程序_以编程方式在Android上用相机拍照

    请看下面的演示代码 . 这是用于UI的XML文件, android:layout_width="fill_parent" android:layout_height="f ...

  8. 基于 Amazon Amplify 构建自己的首个 iOS 应用程序(一)

    目录 摘要 正文 一.创建 iOS 应用程序 1.1 创建 iOS 应用程序 1.2 更新主视图 1.3 构建和测试 二.初始化 Amplify 2.1 安装 Amplify CLI 2.2 初始化 ...

  9. ios请求php接口,php – 确保http(s)请求来自我的iOS应用程序

    我正在开发一个iOS应用程序,用户可以在其中显示与周围环境相关的内容.我有一个用户名/密码验证.因此,用户将他的gps数据及其登录信息发送到我的PHP / MySQL后端,然后返回数据. 但是,我担心 ...

  10. 深度解析~iOS应用程序~生命周期

    摘要:iOS应用程序一般都是由自己编写的代码和系统框架组成,系统框架提供一些基本infrastructure给App来运行,而开发者则自己编写代码定制App的外观和行为,了解iOS Infrastru ...

最新文章

  1. Python3基础教程:可变参数和关键字参数
  2. 《algorithm-note》算法笔记中文版正式发布!
  3. 笔谈OpenGL ES(一)
  4. python基础系列教程——Python3.x标准模块库目录
  5. 拓端tecdat|回归树模型分析纪录片播放量影响因素|数据分享
  6. 拓端tecdat|R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量
  7. kettle 读xml无法获得属性信息,输出表修改不能自动更新修改办法
  8. 计算机怎么没有word文档,电脑新建没有word文档怎么办 没有Word解决方法
  9. 汇智动力学员最新就业喜报,最高薪资16K!
  10. 学大伟业 2017 国庆 Day1
  11. Windows XP Service Pack 3 修复程序列表
  12. 7-11 哥德巴赫猜想
  13. [病毒分析]熊猫烧香
  14. 轮胎规格怎么看?“3T”指数到底是什么?换轮胎前必读!
  15. android framework 引入jia包
  16. usb disconnect
  17. JAVA-打印圆形三种代码
  18. 上百本中文书籍中对《人月神话》的引用(16)
  19. linux xenserver教程,XenServer 6.5安装图文教程
  20. 实验吧 —— web完整渗透测试实验指导书(图片版)

热门文章

  1. android--------自定义控件 之 组合控件篇
  2. 阿里云 centos7 tomcat 启动巨慢的解决方法(几分钟)
  3. Python-文件的管理
  4. 给model模型传数组参数
  5. xen-tools虚拟机快速部署
  6. MusicXML 3.0 (31) - Tab
  7. 关于SAX,DOM,JAXP,JDOM,DOM4J的一些理解
  8. 把C++语言的书读薄
  9. ansi-html Uncontrolled Resource Consumption in ansi-html报错解决
  10. opencv数据的读取