ios入门之界面基础

简介:

学习移动app开发,我们常常从讲解基本的控件开始,如UILabel、UISearchBar、UIButton、UITextField等等。在实现一个简单的ios 应用之前,我们首先来看ios开发中一些基本的概念。

视图控制器(View Controllers)

视图控制器是MVC(Modl-View-Controller)模式的逻辑部分。按照字面意思,这个控制器能够控制某个视图。

UIViewController

苹果极力推崇MVC这种开发模式,并且帮我们实现了一个叫做UIViewController的控制器,它是UIKit的一部分。UIKit是众多能够制作交互界面元素的类,如果你在某个类的开头是UI,那么这个类属于UIkit。UIViewController视图属性被连接到一个视图文件,大多数情况下,是一个storyboard文件。

UIViewController提供一些需要的方法和属性,通常我们在使用的时候只需要将UIViewController子类化即可。如:

class mySubController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()     // Do any addition setup after loading the view
    }
}

在这个例子中,父类就是UIViewController。viewDidLoad()是UIViewcontroller默认的方法。

UINavigationController

我们在编写一个ios软件的时候,往往不只一个界面,界面之前跳转我们常常会用到navigation controller这么一个东西。一个UINavigationController可以在数组中支持多个UIViewController,导航控制器(navigation controller)按照先进后出的堆栈管理原则对我们创建的UIViewController进行管理。通过self.title属性来设置导航栏的标题。如:

self.title =@"登录";

Table View

Table views是用来显示滚动视图的控件,滚动视图是iOS Apps中最常见的用户界面。滚动视图中的每一行叫做cell,cell是用了展示table view中每行的内容。table view可以有很多个cell,多个cell组成section(组)。
在iPhone的设置界面,就是用不同的section把界面分开,像通知中心,控制中心,个人隐私,每个table view都有header和footer,header是在cell上面,footer在cell下面。

Delegation

在很多的OA软件中,往往都有定时提醒这么一个功能。在App内部发生某个事件时,就会发出提醒,为某个事件订阅或者接收提醒的过程叫做delegation(委托)。
例如,我们使用delegate创建table view,并告知要绘制10行。

override func tableView ( tableView: UITableView, numberOfRowsInSection section: Int ) -> Int {
 //Return the number of rows in the section
return 10
}

UITableViewController

UITableViewController会自动创建一个table view,然后设置tableView属性,同时也需要委托自己获取所有需要的delegate方法。

UITableViewDataSource

UITableView的delegate协议有三个必须要写的方法,叫做UITableViewDataSource。这个协议包括组的数量,美组中行的数量,以及cell如何展现。

第一个方法是numberOfSectionsInTableView(_:),如:

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    //#warning Potentially incomplete method implementation.
    //return the number of sections.
    return 0
}

注:注意到return那行目前是零,这意味着这个table view中没有组。苹果公司增加了一个警告注释,说如果组的个数是零,那么就不会显示行,组包含行cell,没有了组section,行cell也就不会被显示出来。

第二个方法是tableView(_:numberOfRowsInSection:),这个方法决定了某个组里具体有多少行,当然这里也不能为0:

override func tableView(tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
     //#warning Incomplete method implementation 
    // Return the number of rows in the section
    return 5
}

第三个方法是tableView(:cellForRowAtIndexPath:),这个方法里有个参数值叫indexPath,是一个NSIndexPath。
section组属性的索引是当前组,cell行属性的索引是当前行:

  • 第一组第一行的索引NSIndexPath是0,0。
  • 第一组第四行的索引NSIndexPath是0,3。
  • 第三组第一行的索引NSIndexPath是2,0。
    可以用点语法调用section和row属性:
var currentRow = indexPath.row
var currentSection = indexPath.section

tableView代码:

override func tableView(tableView: UITableView,cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell =tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell

    return cell
}

ios跳转实例

为了方便大家的理解,我们先来一个简单的跳转的实例。
1)打开Xcode,点击顶部菜单栏的File -> New -> Project,从模板中选择Single View Application,点击Next。如图:
这里写图片描述

2)输入项目名称等属性,点击Next。

3)打开Main.storyboard,点击Inspector上工具栏中第一个图标File Inspector,鼠标移动到到中间部分,不勾选Use Auto Layout选项。这时会出现一个对话框,选择iPhone。
这里写图片描述

4)选中这个界面,然后点击顶部菜单栏的Editor -> Embed In -> Navigation Controller。一个新的scene会增加到Storyboard中,一个scene表示App一屏或者一个界面。Navigation Controller Scene和之前的View Controller Scene是连接在一起的,这连接说明View Controller Scene是Navigation Controller Scene里第一个出现视图,点击Storyboard Editor左下角的盒子按钮打开Document Outline,Document Outline显示了storyboard文件中所有的控件以及控件所处的层次等级。

这里写图片描述

5)接下来我们在ViewController.m中新建一个按钮,用来跳转到第二个界面。
先创建一个按钮,代码如下:

UIButton * button=[UIButton buttonWithType:UIButtonTypeSystem];
    button.frame=CGRectMake(130, 220, 100, 30);
    [button addTarget:self action:@selector(toNext) forControlEvents:UIControlEventTouchUpInside];
    [button setTitle:@"跳转登录" forState:UIControlStateNormal];
    [self.view addSubview:button];

然后通过action添加跳转方法:

//跳转到登录界面
-(void)toNext{
    UIBarButtonItem * back=[[UIBarButtonItem alloc]init];
    back.title = @"返回";
    self.navigationItem.backBarButtonItem = back;
    
    SecondViewController * second = [[SecondViewController alloc]init];
    [self.navigationController pushViewController:second animated:YES];
}

整体的代码结构如下:
这里写图片描述

目录
相关文章
|
6月前
|
移动开发 前端开发 数据安全/隐私保护
iOS代码混淆-从入门到放弃
iOS代码混淆-从入门到放弃
68 0
|
存储 iOS开发
iOS 逆向编程(一)入门条件
iOS 逆向编程(一)入门条件
158 1
|
1月前
|
开发框架 移动开发 Android开发
安卓与iOS开发中的跨平台解决方案:Flutter入门
【9月更文挑战第30天】在移动应用开发的广阔舞台上,安卓和iOS两大操作系统各自占据半壁江山。开发者们常常面临着选择:是专注于单一平台深耕细作,还是寻找一种能够横跨两大系统的开发方案?Flutter,作为一种新兴的跨平台UI工具包,正以其现代、响应式的特点赢得开发者的青睐。本文将带你一探究竟,从Flutter的基础概念到实战应用,深入浅出地介绍这一技术的魅力所在。
80 7
|
3月前
|
开发工具 C语言 Swift
探索iOS开发之旅:从入门到精通
【8月更文挑战第30天】在这篇文章中,我们将一起踏上一场关于iOS开发的奇妙旅程。无论你是刚刚接触iOS开发的新手,还是希望提升自己技能的开发者,这篇文章都将为你提供有价值的指导和启示。我们将从基础的iOS开发概念开始,逐步深入到高级技巧和最佳实践。通过这篇文章,你将了解到如何构建一个成功的iOS应用程序,以及如何不断提升自己的开发技能。让我们一起开启这场探索之旅吧!
57 4
|
移动开发 前端开发 数据安全/隐私保护
iOS代码混淆-从入门到放弃
iOS代码混淆-从入门到放弃
173 0
|
5月前
|
编解码 安全 Android开发
探索iOS与Android开发的差异:从界面到性能
【6月更文挑战第10天】在移动应用开发的广阔天地中,iOS和Android两大平台各占山头,它们在设计理念、用户体验、性能优化等方面展现出独特的魅力。本文将深入探讨这两大系统在开发过程中的主要差异,从用户界面设计到性能调优,揭示各自背后的技术逻辑与创新策略,为开发者提供全面的视角和实用的开发指南。
|
6月前
|
安全 Swift iOS开发
【Swift 开发专栏】Swift 与 UIKit:构建 iOS 应用界面
【4月更文挑战第30天】本文探讨了Swift和UIKit在构建iOS应用界面的关键技术和实践方法。Swift的简洁语法、类型安全和高效编程模型,加上与UIKit的紧密集成,使开发者能便捷地创建用户界面。UIKit提供视图、控制器、布局、动画和事件处理等功能,支持灵活的界面设计。实践中,遵循设计原则,合理组织视图层次,运用布局和动画,以及实现响应式设计,能提升界面质量和用户体验。文章通过登录、列表和详情界面的实际案例展示了Swift与UIKit的结合应用。
296 1
|
缓存 JavaScript iOS开发
iOS 逆向编程(十四)Cycript 语法入门
iOS 逆向编程(十四)Cycript 语法入门
193 0
|
6月前
|
移动开发 前端开发 数据安全/隐私保护
iOS 代码混淆 - 从入门到放弃
iOS 代码混淆 - 从入门到放弃
|
移动开发 前端开发 数据安全/隐私保护
 iOS代码混淆-从入门到放弃
代码混淆可以对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低代码的可读性,增加逆向工程的难度,从而有效保护应用程序的安全性,减少开发者的经济损失。