从这篇文章你将学到怎样构建一个简单的ios app.从一个空的工程模板开始,配置storyboard,配置viewController,创建多个场景并用导航在各个场景之间切换。在这个app中创建了一个新类,ToDoItem,用它来存储一个单个的Item.最后tableView controller来显示数据。通过这个app的学习,能够学到怎样在多个场景之间的切换,怎样用tableview 来显示数据。
1 首先创建一个empty application,删掉在app delegate中用来对window的属性设置的代码
2 创建storyboard,用它来作为app的开发界面,配置storyboard作为你的app默认启动storyboard
3 添加view controller 来管理你的view elements,默认该view controller作为你的app的initial view controller,也就是app启动时第一个scene
4 在view controller上添加text field,用它来获取用户的输入。调整它的大小并放在screen上半部分你认为合适的的位置。用auto layout来使text field在不同的设备在不同方向上都能很好的显示。
5 添加table view controller,来显示数据,并把table viewcontroller 设置为initial view controller,配置table view controller,并添加静态数据,添加导航,配置navigation bar,选择modal segue。要完成view controller的配置还需要一些代码,新建view controller来放置这些代码,由于有两个scene,所以需要新建两个view controller,为每个scene配置一个特定的view controller.添加unwind segue从add to do item 场景导航回To Do list场景。现在需要把unwindToList方法与source view controller的done和cancel button连接起来,此时运行app,可以发现实现了导航
6 创建model,添加一个类ToDoItem,添加属性
7 load data
接下来需要在ToDoListViewController里面新建array去存储item,并且对数组初始化
初始化数组
上图中load initial data方法,一般是从persistent store中load 数据到新建的array中,在这里创建了一些测试数据
8 display data
在这里把ToDoListViewController当作table view的data source,因此,ToDoListViewController 必须实现UITableViewDataSource的协议。配置table view的功能需要实现三种方法:tableView:numberOfSelectionsInTableView:返回一个整形数,表示在table view中有多少个selection
tableView:numberOfRowsInSelection:返回一个整形数,表示在 一个selection中有多少行
tableView:cellForRowAtIndexPath:这个方法请求一个cell去显示在给定的哪一行
prototype cells允许你对cell的styles,color,还有其他的属性进行配置,在程序运行时,data source 为每一行load cells的配置,并配置cells去显示数据
为了load正确的cell,需要去配置cell的名字,并配置cell的selection style 为 none
9 添加checkmark到app中
通过实现tableView:didSelectRowAtIndexPath:来对用户的taps做出响应,updata 所对应的item
然后显示checkmark在方法tableView:cellForRowAtIndexPath:中配置cell来显示checkmark
9 add new item
当user tap done button时需要添加新的item,在方法preparedForSegue:方法中检测done button是否被按下,如果按下则创建item
10 存储和显示新的item
在按下done button或cancel button时,方法unwindToList会被先执行然后才会导航到ToDoListViewController scene.
通过这个方法获得addToDoItemViewController,重新获取用户新添加的item,然后添加该item到ToDoList array中,让table view重新从TODoList array中load 数据,然后显示