热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS–第一个iPhone应用程序

创建第一个应用程序现在我们将创建一个简单的单视图应用程序(一个空白应用程序),它将在iO


创建第一个应用程序



现在我们将创建一个简单的单视图应用程序(一个空白应用程序),它将在 iOS 模拟器上运行。


步骤如下。


步骤 1 - 打开Xcode并选择 Create a new Xcode project.

Xcode 欢迎页面


步骤 2 − 选择 Single View Application.

创建项目


步骤 3 − 输入产品名称,即应用名称、组织名称和公司标识符。

新项目创建选项


步骤 4 − 确保 Use Automatic Reference Counting选择是为了在超出范围时自动释放分配的资源。点击下一步。


步骤 5 − 选择项目的目录并选择创建。

创建项目选择文件夹


步骤 6 - 您将看到如下屏幕 -

Xcode 项目页面


在上面的屏幕中,您将能够选择支持的方向、构建和发布设置。有一个现场部署目标,我们要支持的设备版本,让我们选择 4.3,这是现在允许的最低部署目标。目前,这些不是必需的,让我们专注于运行应用程序。


步骤 7 − 现在,在运行按钮附近的下拉菜单中选择 iPhone 模拟器并选择运行。



步骤 8——就是这样;您已成功运行您的第一个应用程序。您将获得如下输出 -



现在让我们更改背景颜色,以开始使用界面构建器。选择 ViewController.xib。选择右侧的背景选项,更改颜色并运行。

界面生成器


在上面的项目中,默认情况下,部署目标已设置为 iOS 6.0 并启用自动布局。为了确保我们的应用程序在 iOS 4.3 及更高版本的设备上运行,我们已经在创建此应用程序的开始修改了部署目标,但我们没有禁用自动布局。


要禁用自动布局,我们需要取消选中每个笔尖文件检查器中的自动布局复选框,即 xib 文件。下图给出了 Xcode 项目 IDE 的各个部分(提供:Apple Xcode 4 用户文档)。

Xcode 4 工作区


文件检查器位于检查器选择器栏中,如上所示,可以在那里取消选中自动布局。当您只想定位 iOS 6 设备时,可以使用自动布局。此外,如果您将部署目标提升到 iOS 6,您将能够使用许多新功能,例如存折。现在,让我们坚持将 iOS 4.3 作为部署目标。



第一个 iOS 应用程序的代码



您会发现为您的应用程序生成的五个不同的文件。它们列出如下 -


  • AppDelegate.h

  • AppDelegate.m

  • ViewController.h

  • ViewController.m

  • ViewController.xib




AppDelegate.h



// Header File that provides all UI related items.
#import
// Forward declaration (Used when class will be defined /imported in future)
@class ViewController;
// Interface for Appdelegate
@interface AppDelegate : UIResponder
// Property window
@property (strong, nonatomic) UIWindow *window;
// Property Viewcontroller
@property (strong, nonatomic) ViewController *viewController;
//this marks end of interface
@end




Important items in code




  • AppDelegate 继承自处理 iOS 事件的 UIResponder。




  • 实现 UIApplicationDelegate 的委托方法,它提供了关键的应用程序事件,如完成启动、即将终止等。




  • UIWindow 对象来管理和协调 iOS 设备屏幕上的各种视图。这就像加载所有其他视图的基本视图。通常,一个应用程序只有一个窗口。




  • UIViewController 来处理屏幕流。





AppDelegate.m



// Imports the class Appdelegate's interface
import "AppDelegate.h"
// Imports the viewcontroller to be loaded
#import "ViewController.h"
// Class definition starts here
@implementation AppDelegate
// Method to intimate us that the application launched successfully
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewCOntroller= [[ViewController alloc]
initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewCOntroller= self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
/* Use this method to release shared resources, save user data,
invalidate timers, and store enough application state information
to restore your application to its current state in case it is
terminated later. If your application supports background
execution, this method is called instead of
applicationWillTerminate: when the user quits.*/
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
/* Called as part of the transition from the background to the
inactive state. Here you can undo many of the changes made on
entering the background.*/
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
/* Restart any tasks that were paused (or not yet started) while
the application was inactive. If the application was previously in
the background, optionally refresh the user interface.*/
}
- (void)applicationWillTerminate:(UIApplication *)application {
/* Called when the application is about to terminate. Save data if
appropriate. See also applicationDidEnterBackground:. */
}
- (void)applicationWillTerminate:(UIApplication *)application {
/* Called when the application is about to terminate. Save data if appropriate.
See also applicationDidEnterBackground:. */
}
@end




Important items in code




  • UIApplication 委托在这里定义。上面定义的所有方法都是 UI 应用程序委托,不包含用户定义的方法。




  • 分配 UIWindow 对象以保存分配的应用程序。




  • UIViewController 被分配为窗口的初始ViewController。




  • 为了使窗口可见,调用 makeKeyAndVisible 方法。





ViewController.h



#import
// Interface for class ViewController
@interface ViewController : UIViewController
@end




Important items in code




  • ViewController 类继承了 UIViewController,它为 iOS 应用程序提供了基本的视图管理模型。





ViewController.m



#import "ViewController.h"
// Category, an extension of ViewController class
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end




Important items in code




  • 这里实现的两个方法是在基类 UIViewController 中定义的。




  • 在视图加载后调用的 viewDidLoad 中进行初始设置。




  • 在内存警告的情况下调用 didReceiveMemoryWarning 方法。




推荐阅读
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
author-avatar
LF龙丰通讯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有