class ViewController: UIViewController, UITextFieldDelegate {
override func viewDidLoad() {
let textField = UITextField()
textField.frame = .init(x: 0, y: 0, width: 320, height: 44)
textField.delegate = self
self.view.addSubview(textField)
}
func textFieldDidEndEditing(_ textField: UITextField) {
// キーボードのエンタキーをタップして確定したときに呼ばれる
}
}
class ViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// 画面が表示される直前に呼ばれる
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// 画面が表示された直後に呼ばれる
}
}
class ViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)),
name: UIResponder.keyboardWillShowNotification,
object: nil)
}
override func viewDidDisappear(_ animated: Bool) {
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification,
object: nil)
}
@objc func keyboardWillShow(_ notification: Notification) {
// キーボードが表示されたときに呼ばれる
}
}
class ViewController: UIViewController {
var model = Model()
var observation: NSKeyValueObservation?
override func viewDidLoad() {
observation = model.observe(\.value, options: [.new]) { model, change in
// model.valueが変更したときに呼ばれる
}
}
}
class Model: NSObject {
@objc dynamic var value: Int = 0
}
class ViewController: UIViewController {
override func viewDidDisappear(_ animated: Bool) {
let alert = UIAlertController(title: "Alert", message: "", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in
// アラートのOKがタップされたときに呼ばれる
}))
self.present(alert, animated: true, completion: { in
// アラートが表示された直後に呼ばれる
})
}
}
import Combine
class ViewController: UIViewController {
@Published var text: String = "Default"
var label: UILabel = UILabel()
var cancellables = Set<AnyCancellable>()
override func viewDidLoad() {
self.$text
.map({ Optional($0) })
.receive(on: DispatchQueue.main)
.assign(to: \UILabel.text, on: label)
.store(in: &cancellables)
}
}
struct ContentView: View {
@State var buttonText = "Button"
var body: some View {
Button(action: {
self.buttonText = "Button Tapped"
}, label: {
Text(self.buttonText)
})
}
}