[IOS Dev] 关于Connections

Connections

连接UI和View Controller

  • Storyboard中其实是xml文件,但不要直接修改xml文件

还是使用crtl + 拖动的方式

  • Outlets: 获取或者修改组件的properties时,使用outletsoutlet

    • outlet
    • outlet collection
    • IBOutlet: Interface Builder
    • 声名的变量textField是implicitly unwrapped optional
    • weak/strong: outlets都是weak references, 不需要我们手动初始化对象
  • Actions: 希望组件对用户输入做出反应,使用actions
    action

    • Type
      • Any: 任何data type
    • events: 用户可能与UI交互的行为
    • sender:执行函数的对象,可以在函数内部access

Text Field

  • keyboard traits 中可以customize弹出键盘的形式,例如keyboard type中可以选择用户输入的形式keyboard type
  • simulator有时候会不受控制,可以通过cmd+k弹出或消失
@IBAction func buttonDidPressed(_ sender: UIButton){
	let name: String = nameTextField.text 
	//不能build,因为左边是string,右边是optional
	//Correct way:
	let name: String = nameTextField.text ?? "" 
	//通过nil-coalescing提供一个默认值
}
使键盘消失
  • 用户通常会用enter或者点击空白处来撤销键盘
  • enter取消键盘,两种常用方式(二选一)
    • UITextFieldDelegate protocol
    • IBAction

ibaction

  • 注意event是Did End On Exit
    在viewDidLoad中加入下面的代码,使初始时屏幕的focus为textField
override func viewDidLoad() {
        super.viewDidLoad()
 		textField.becomeFirstResponder()
 }

在用户点击别处或enter时,

@IBAction func userDidTappedReturn(_ sender: UITextField) {
       textField.resignFirstResponder()
   }
  • 在有多个输入的情况,比如email+密码,可以在enter时把firstResponder变成下一个输入textView
点击背景处使键盘消失
  • 两种常用方法,二选一
    • Background Button,把背景变成一个巨大的透明按钮
    • Touch events
Background Button
  1. 添加一个按钮,边界设为屏幕边缘
  2. 在document outline中把它拖到最上面 - 成为最靠后的element(最先render,所以在最后面)
  3. 为Background Button添加action:点击时取消textField的firstResponder
Touch Events
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?){
	let touch = touches.first
	if nameTF.isFirstResponder && touch?.view != nameTF {
		nameTF.resignFirstResponder()
	}
	super.touchesBegan(touches, with: event)
}

常见错误

  • 在ViewController中重命名一个组件,报错this class is not key value coding-compliant for the key ... ⇒ storyboard中的reference也需要重命名
  • 可以使用右键+rename的方式,需要先删除掉已经建立的connection

View Controller Life Cycle

init
loadView
viewDidLoad
viewWillAppear
viewDidAppear
viewWillDisappear
viewDidDisappear
viewDidUnload
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值