Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 970 - いろいろ考える

私もいろいろ考えているつもりですが、これで生計を立てているプロのプログラマーの人は本当にいろいろ考えているんだなって思います。考えなきゃいけないポイントが本当に多いですよね。

自作アプリを作ろうとしていますが、コーディングを考える以前に、「入力スタイルをどうしたらいいんだろう?」という疑問が大きなウエイトを占めています。

iPadというiPhoneより少し大きな画面で入力をする場合、iPhoneと同じ入力スタイルを用意するのに違和感があります。iPhoneなら画面の下からニョロニョロとせり出してくるキーボードでも違和感がありませんが、画面の広いiPadで決して入力しやすいと思いません。そこでPopoverによる入力を考えてみたんですがどうでしょうね。

入力のすべての項目でPopoverを使うのには抵抗があります。じゃあどの入力ならいいのか?いろいろ考えながらテストしたいと思っています。

これから患者情報を登録するユーザーインターフェイスを考えていきたいと考えています。意見があれば教えてください。

では。

Swiftで遊ぼう! - 969 - 年齢も自動計算

Popoverで誕生日の日付を選択したら自動的に年齢を計算して年齢フィールドに表示するようにしました。

こういう簡単な機能でも拡張するのに時間がかかりますね。

まだまだ拡張性を考えながらコーディングができていないからです。可読性の高いコーディングをするための勉強もどうしたらいいんでしょうね。

自分で書いたコードが既に複雑になり、ブログで紹介できるレベルを超えてしまいました。あり得ないですね。

困ったものです...

f:id:yataiblue:20170502181940j:plain

上手く動いているように見えます。しかし、まだ入力の制限がかかっていません。誕生日を現時点から未来に設定できるからです。こういう制限も少し考えないと今の私にはできません(T_T)

何事もゆっくりと。

Swiftで遊ぼう! - 968 - DateFormatterを利用する

新しいAPIが公開されると、古いAPIを無視しようとする悪い癖があります。ISO8601DateFormatterクラスがiOS10から利用できるようになったという話を昨日しました。

もう古いDateFormatterは必要無いって思い込みましたが、少し調べているとISO8601DateFormatterがDateFormatterの機能をすべて内包している訳ではありません。

ということで「年月日」表示をするために「DateFormatter」を利用しました。

すると、昨日悩んでいたことがあっという間に解決!

f:id:yataiblue:20170502071204j:plain

ちょっとずつ進歩しています。

Swiftで遊ぼう! - 967 - Popoverの微調整は続く

少しずつ自分の望む機能は実装できています。TextFieldをタップしてPopoverが表示され、日付を選択するとその日付がTextFieldに表示されるところまで実装しました。

TextFieldに日付が既に表示されていると、Popoverにその日付が表示されるようにしました。

本当に少しずつです。

f:id:yataiblue:20170501180407j:plain

Dateクラスの取り扱いは少し複雑という話は以前しました。Dateクラスで日付を扱うのですが、画面に表示するときはStringクラスを使用します。このDateクラスとStringクラスの相互のやりとりをDateFormatterクラスが請け負っているんです。

じゃあ素直にDateFormatterクラスを使用しようと思ったら...

iOS10からDateFormatterクラスが進化していたことが分かりました(^_^;)

ISO8601DateFormatter

まだまだ勉強が足りないのですが以下に簡単な説明があったので助かりました。

[iOS 10] ISO8601DateFormatter について | Developers.IO

それでも行き詰まっています。上のフィールドで表示されている「1968-11-15」を「1968年11月15日」に変更できないんです。計算型プロパティで実装しなければならないのか、標準のメソッドかプロパティに存在するのかまだ分かっていません。ご存じの方がいらっしゃれば教えて下さい。

では。

Swiftで遊ぼう! - 966 - Popoverの微調整

入力のためのユーザーインターフェースを考えることは重要だと思います。

しかしながら、細かいインターフェイスを考えながら全体を作り上げていく作成法は望ましくないでしょう。作品をなんとか作り上げたいプログラミングど素人の親父の足掻きだと思ってください。3ヶ月でアプリができるこの世の中で、3年もかかっています(^_^;)

今日は少しPopoverの微調整をしました。TextFieldをタップしてPopoverを出現させ、日付を選択するとTextFieldに日付を表示させるところまでできました。ちゃんとデリゲーションのやり方が理解できているってことです。また、セグエでPopoverが表示されるデフォルトの位置が微妙に気に入らなかったので、テキストフィールドのホリゾンタルの中央に動かしました。

f:id:yataiblue:20170501085117j:plain

まだ不十分です。ググりながら分からないところを調べながら進んでいます。

では。

Swiftで遊ぼう! - 965 - Popoverのメモ1

Popoverをコードで利用するときの備忘録

// DatePopoverControllerはViewControllerのサブクラス
let dateController = DatePopoverController()

dateController.modalPresentationStyle = .popover
dateController.preferredContentSize = 
        CGSize(width: 300, height: 300)
dateController.popoverPresentationController?.sourceView = 
        view
dateController.popoverPresentationController?.sourceRect = 
        sender.frame
dateController.popoverPresentationController?.
        permittedArrowDirections = .any

if let popoverController = dateController.
            popoverPresentationController {
    popoverController.delegate = self
    popoverController.backgroundColor = UIColor.blue
            
}
        
present(dateController, animated: true, completion: nil)

これは@IBActionに設定してコードでPopoverを作るケース。

Swiftで遊ぼう! - 964 - Popoverを極める!

自作アプリを作っています。今まで勉強した知識を基にして組み上げているって感じです。

日付を入力するインターフェイスに「Popove」を採用してみました。コードで実装とストーリーボードで実装する方法を復習してポップオーバーの利用は完璧です。

日付の入力は「DatePicker」が望ましいのかなってインターフェイスも考えています。

基本的にiPadアプリを作っているので、この方法が最適じゃないかと思います。西暦と和暦の切り替えもできるようにしました。

f:id:yataiblue:20170430105412j:plain

まあ、まだまだ調べながら実装しているって感じです。