Swift3.0を使って簡単なiPhoneアプリを作ってみます
スマホからの文字列入力を扱ってみます
#1. 文字列の入力
- Xcodeで新しいSingleViewアプリケーションを用意します
- 下記のソースを使用するためには、自分のアプリのMain.storyboardに自分であらかじめテキストフィールド(TextField)とボタン(Button)を用意する必要があります。TextFieldとButtonを用意し、下記の
tf1
とbutton1
へ接続します - ViewController.swiftに下記をコピペします
文字列の入力
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var tf1: UITextField!
@IBAction func button1(_ sender: UIButton) {
print("print from button : \(tf1.text!)")
}
override func viewDidLoad() {
super.viewDidLoad()
// Delegateを自身に設定するx
tf1.delegate = self as UITextFieldDelegate
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// UITextFieldが編集された直前に呼ばれる
func textFieldDidBeginEditing(_ tf1: UITextField) {
print("textFieldDidBeginEditing: \(tf1.text!)")
}
// UITextFieldが編集された直後に呼ばれる
func textFieldDidEndEditing(_ tf1: UITextField) {
print("textFieldDidEndEditing: \(tf1.text!)")
}
// 改行ボタンが押された際に呼ばれる
func textFieldShouldReturn(_ tf1: UITextField) -> Bool {
print("textFieldShouldReturn \(tf1.text!)")
// 改行ボタンが押されたらKeyboardを閉じる処理.
tf1.resignFirstResponder()
return true
}
}
- TextFieldへ入力し、ボタンを押すとXcodeのログ出力領域へ出力されることを確認します
#2. Node-REDへ送付します
- (初心者向け)Swift3.0で初アプリ - iPhoneからMacbookへアクセスを参照し、iPhoneからMacbookのNode-REDへ接続します
- 下記のソースを使用するためには、自分のアプリのMain.storyboardに自分であらかじめテキストフィールド(TextField)とボタン(Button)を用意する必要があります。TextFieldとButtonを用意し、下記の
tf1
とbutton1
へ接続します - 下記をコピペし実行してみます
文字列を入力しNode-REDへ送付
import UIKit
import Alamofire
import CoreMotion
class ViewController: UIViewController, UITextFieldDelegate {
let url = "http://192.168.2.1:1880/test10" //送付先を指定
let headers: HTTPHeaders = [
"name": "value"
]
@IBOutlet weak var tf1: UITextField!
@IBAction func button1(_ sender: UIButton) {
sendJson()
}
override func viewDidLoad() {
super.viewDidLoad()
// Delegateを自身に設定するx
tf1.delegate = self as UITextFieldDelegate
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// UITextFieldが編集された直前に呼ばれる
func textFieldDidBeginEditing(_ tf1: UITextField) {
print("textFieldDidBeginEditing: \(tf1.text!)")
}
// UITextFieldが編集された直後に呼ばれる
func textFieldDidEndEditing(_ tf1: UITextField) {
print("textFieldDidEndEditing: \(tf1.text!)")
}
// 改行ボタンが押された際に呼ばれる
func textFieldShouldReturn(_ tf1: UITextField) -> Bool {
print("textFieldShouldReturn \(tf1.text!)")
// 改行ボタンが押されたらKeyboardを閉じる処理.
tf1.resignFirstResponder()
return true
}
// 送信処理
//func sendJson(sender:UIButton){
func sendJson(){
let parameters: Parameters = [
"moji_param": tf1.text, // 文字パラメータの例
"suji_param": 123, // 数値パラメータの例
"nested": [
"nested_param": "ごきげんよう" // ネストしたパラメータの例
]
]
// Alamofireでの送信処理
Alamofire.request(url,
method: .post, // POSTメソッド
parameters: parameters,
encoding: JSONEncoding.default,
headers: headers)
.authenticate(user: "user", password: "password")
.responseJSON { response in
if
let json = response.result.value as? [String: Any],
let prop1 = json["prop1"] as? String
{
debugPrint(prop1)
}
debugPrint(response)
}
}
}
- MacbookのNode-REDへ入力された文字列データが送付されることを確認します