xcodeのプロジェクトにテキストファイルを追加して読み書きしたいのだが・・・
プロジェクトにファイルを追加して、それを読んだり書いたりしたとき、以下のようにするといいらしい
(Simulatorの方にファイルが転送されていたので正しいものと思う)
①Resourcesフォルダを切って、送りたいファイルを保存する
②プロジェクトを選択し、「New Group」から「Resouces」を作成
右側のペインの「Full Path」を①で作成したフォルダに設定する
(Full Pathの右上にあるフォルダアイコンを押下するとフォルダを変更できるよ)
③②で作成したGroupにファイルを追加する
(Groupを選択し、「Add File to …」から①のファイルを追加してやる
④一応確認だが、ビルド設定の「Build Phases」の「Copy Bundle Resources」に①のファイルが出ていることを確認する
(※上の例では、Station.csvというファイルを追加して転送できるように設定した)
あとは下のソース
これで設置されたファイルのパスがわかるのでファイルを開いてやればいいようだ
segueによる画面遷移の際、右から左への画面への画面遷移ができない
画面遷移を行う際、segueという仕組みを利用する
で、その遷移の話として「右方向の画面へ遷移していく」表示方式を取りたかったのだが、「下から上へ出てくる方式」しかできなかった
まずは以下のようになっている
検索ボタンを押下すると、下の画面へ遷移するようにsegueを配置した
しかし、この方法では、「下から上へ画面が出てくる」方式の遷移しかできない
他のサイトに「show」は右から出てくる、みたいに書いてあって、なんども思考錯誤したけど、うまくいかなかった
するとどうも、「Navigation Controller」というものが挟まっていないことが原因だとわかってきた
だので、ナビゲーションコントロールを開始したいSceneの一番上のViewを選択し、メニューから[Editor]→[Embed In]→[Navigation Controller]と選択してやる
すると以下のように「Navigation Controller」が挟まってくる
そうすると、ようやく「右から左への画面遷移」ができるようになった
なんというか、大前提として、Navigation Controllerが必要だったようだ
CoreDataを使う際にいきなりエラー
CoreDataというiOSのO/Rマッパ(かな?)を使用する際、いきなりエラーが出てたじろいだ
手順はこんな感じ
まずはDataModelというのを追加
つぎにEntity(エンティティ)を追加
エンティティというのは、テーブルとカラムの対応づけ、みたいなものです(雑な説明で恐縮ですが)
んで、これを実際にソース(swift)に変換する
実際にできたファイルはこんな感じ
いきなりエラーでますやん
ツールで作ってんのにいきなりエラーってなに?
Invalid redeclaration of 'Entity' とか
'Entity7 is ambigous for type lookup in this context とか
解決法
画面右端の「Codegem」を「Manual/None」にすればよいようだ・・・
詳細は後日調べる
UIButtonで余白があるのに文字が全部表示されない件
UIButtonにタイトルを指定している際、幅は十分あるにもかかわらず
文字が全部表示しきれなかった
初期画面はこちら
次の画面で選択した文字列に置き直した結果がこちら
省略されてますよね?
省略される位置の問題でなく、表示する努力を怠った感じで省略されてますよねw
以下の方法で暫定解決としました
最初に長い文字列を設定しておくと、十分なサイズが確保される模様
(たぶん、本来的には中に入っているUILabelをごにょごにょするんだろうけど)
segueによる画面間データの受け渡し(失敗例)
親画面に表示する内容を子画面で選択。その後、親画面でそれを表示したい
子画面にはTableViewがあり、テーブルを選択した際にUnwindActionが走る
失敗例:
子画面側ソース
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { let viewConroller = segue.destination as! SearchViewController switch segueName { case "selectDestination": viewConroller.destinationButton.titleLabel?.text = selectedItem case "selectDeparture": viewConroller.departureButton.titleLabel?.text = selectedItem default: break } }
のように、親画面をいじってやるつもりだったが、なぜか空文字になっていた
それは、TableViewの選択時イベント
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { selectedItem = list[indexPath.row] }
が後に走るため、登録する文字が空文字になっていた為
なんでやねん