昨天已经在storyboard上将tableView连结上程序中的table,不过并没有解释到比较仔细原理的部分。今天回归到controller程序面,因此会稍加解释想要加上tableView的流程,与画面/程序两边的逻辑。
@IBOutlet var table: UITableView!
这是在一开始我们就先写在ViewController里的。
其中的惊叹号,回顾一下第2天的swift 101有讨论到强制取值,这边表示table在之後逻辑中,不需要再额外加上!
就会自动取值。
而前缀@IBOutlet
与待会使用到的@IBAction
则是有以下的功能 :arrow_down:
IBOutlet:建立一个变数(Var),来存取或修改画面上的元件(Object)。 IBAction:建立事件发生时所要执行的Function。不是每一个元件(Object)都可以拉Action,只有继承UIControl的元件(Object)才可以建立Action,例如Label就无法建立,因为Label只是用来显示,并不会有任何触发动作
因此,我们昨天才可以将tableView跟viewController中的table bind起来。
@IBAction func didTapAddButton()
那此时我们新增一个方法,希望点下右上方加号的时候可以进行新增的动作。
回到storyboard,如上,一样的逻辑,我们可以右键点选画面上方左边的变数设定选项,进而将button与action连结。
除了新增,还有浏览、以及删除的功能,因此我们再来新增两个view controller。找到後直接拖拉到画面中,或是click两下/按下enter也可以。
相对应的,我们也要新增两个view controller
可使用以下路径去新增
File > New > > File > Cocoa Touch Class > Subclass of UIViewController
分别取名为如下
import RealmSwift
import UIKit
class EntryViewController: UIViewController, UITextFieldDelegate {
除了继承UIViewController
,我们也加上UITextFieldDelegate
,以使得text的委派对象成为自己。如此一来,当按下return键的时候,就可以离开键盘。
var textField: UITextField!
@IBOutlet var datePicker: UIDatePicker!
private let realm = try! Realm()
public var completionHandler: (() -> Void)?
接下来根据realm提供的官方方法进行default连线,拿到资料库的reference
completionHandler
要做的事是新增後让list知道新增了一个item,然後重新拿资料。
override func viewDidLoad() {
super.viewDidLoad()
textField.becomeFirstResponder()
textField.delegate = self
}
因为我们希望一新增的时候可以直接将游标指定到第一栏,因此在载入的时候就把textField设定为first responder。
也就是说,如果有多个textField,可以设定离开时将下一个textField指定为first responder。
接着,必须再实作一个方法textFieldShouldReturn
,并resign first responder,当结束输入的时候把keyboard拿掉。
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
@IBAction func didTapSaveButton() {
}
}
当然,也先把按下储存按钮的方法框写起来。
写了约莫一周,原先以为一个简单的to-do list两天就可以做完XD
结果到了开发第5天连个基本的CRUD都还没做出来,哈哈~
觉得mobile很多的工具我都不熟悉,因此现在只能看一个学一个,不知道如果当初选obj-c会发生什麽事情XDDD
明天会再回到storyboard,如果有任何文章上的建议,不管是我个人学习或开发上的,都欢迎留言给我。谢谢~(•͈⌔•͈⑅)
>>: [Day 06] 特徵图想让人分群 ~模型们的迁移学习战~ 第一季 (迁移学习)
在学习 Python 之前,我们需要先安装好这个语言, 这边准备了三个作业系统的安装方式。 MacO...
Cloud Shell 介绍 Cloud Shell 是 GCP 提供的命令列介面,只要用浏览器就能...
前言 经过昨天一连串得技术 跟程序轰炸 今天想分享一些使用laravel的心得 并且总结昨天的技术 ...
WP Lightbox 2 是一款支援图片灯箱效果,点图放大附关闭功能的外挂,适合在响应式网页上使用...
昨天所说的(Get)主要用於取得api的资料,像是昨天https://jsonplaceholder...