福野泰介の一日一創 - create every day

すぐ作れる力で備える。一日一創のきっかけ、3.11 - Swift4で点字テーブルアプリ

2018/03/11
#swift #braille 

7年前の2011年、必要なものをすぐに作ることができなかった悔しさが、2012年の一日一創の原動力。
あのときには存在しなかったオープンデータが、今は日本中にある。
開発力を持った子供たちがどんどん誕生している。

久々にiPhoneネイティブアプリをSwiftで作ってみる。
Swift入門から3年、当時Swift2だったものはSwift4になっている。
時代に合わせてどんどん変わる言語を使うには、webと自ら学ぶ力、大事。

動作確認を兼ねて、点字を覚えるためのアプリを作成。
点字と書いた点字アイコン。

タップしたら、体表点字化させるなど、何か作ると、追加でいろいろ改造したくなる。


Xcodeの新規プロジェクト作成画面、"Argumented Reality App"を選ぶと、すぐにできちゃうARアプリ。

当初は有料でしか開発できなかったiPhoneアプリ、今は無料なのでMacとiPhoneを持っていれば子供でも気軽に開発可能。
[Xcode][iOS] 有料ライセンスなしでの実機インストール 全工程解説! | Developers.IO
あると楽しい、すぐ作れる力!

点字テーブルアプリのプログラム(ViewController.swift)

// // ViewController.swift // tenji1 // // Created by Taisuke Fukuno on 2018/03/12. in Swift4 // CC BY http://fukuno.jig.jp/ // import UIKit class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { var tableView:UITableView! /* 2800 ⠀ ⠁ ⠂ ⠃ ⠄ ⠅ ⠆ ⠇ ⠈ ⠉ ⠊ ⠋ ⠌ ⠍ ⠎ ⠏ 2810 ⠐ ⠑ ⠒ ⠓ ⠔ ⠕ ⠖ ⠗ ⠘ ⠙ ⠚ ⠛ ⠜ ⠝ ⠞ ⠟ 2820 ⠠ ⠡ ⠢ ⠣ ⠤ ⠥ ⠦ ⠧ ⠨ ⠩ ⠪ ⠫ ⠬ ⠭ ⠮ ⠯ 2830 ⠰ ⠱ ⠲ ⠳ ⠴ ⠵ ⠶ ⠷ ⠸ ⠹ ⠺ ⠻ ⠼ ⠽ ⠾ ⠿ https://ja.wikipedia.org/wiki/%E7%82%B9%E5%AD%97 */ let sections = ["数字", "アルファベット", "ひらがな", "記号"] let data = [ ["1 ⠂", "2 ⠆", "3 ⠒", "4 ⠲", "5 ⠢", "6 ⠖", "7 ⠶", "8 ⠦", "9 ⠔", "0 ⠴" ], ["A ⠁", "B ⠃", "C ⠉", "D ⠙", "E ⠑", "F ⠋", "G ⠛", "H ⠓", "I ⠊", "J ⠚", "K ⠅", "L ⠇", "M ⠍ ", "N ⠝", "O ⠕", "P ⠏", "Q ⠟", "R ⠗", "S ⠎", "T ⠞", "U ⠥", "V ⠧", "W ⠺", "X ⠭", "Y ⠽", "Z ⠵" ], [ "あ ⠁", "い ⠃", "う ⠉", "え ⠖", "お ⠊", "か ⠡", "さ ⠱", "た ⠕", "な ⠅", "は ⠥", "ま ⠵", "や ⠌", "ら ⠑", "わ ⠄", "を ⠔", "ん ⠴" ], [ "数字 ⠼", "アルファベット(外字符) ⠰", "濁音符 ⠐", "半濁音符 ⠠", ] ] override func viewDidLoad() { super.viewDidLoad() tableView = UITableView() tableView.frame = view.frame tableView.delegate = self tableView.dataSource = self tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell") tableView.tableFooterView = UIView(frame: .zero) view.addSubview(tableView) } func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 40 // セクションヘッダの高さ } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 20 // セルの高さ } func numberOfSections(in tableView: UITableView) -> Int { return sections.count } func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { return sections[section] } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return data[section].count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) cell.textLabel?.text = data[indexPath.section][indexPath.row] //cell.accessoryType = .disclosureIndicator //cell.accessoryView = UISwitch() // スィッチ return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print(indexPath) // セルタップ時 let alert: UIAlertController = UIAlertController(title: "tenji", message: data[indexPath.section][indexPath.row], preferredStyle: UIAlertControllerStyle.alert) let btnok: UIAlertAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: { (action: UIAlertAction!) -> Void in print("OK") }) alert.addAction(btnok) present(alert, animated: true, completion: nil) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / アイコン画像 / プロフィール画像