投稿

4月, 2019の投稿を表示しています

【Swift4】TableViewのカスタムセルの高さが変わらない問題の解決法

イメージ
この記事の概要 UITableViewCellでカスタムセルのために使う.xibファイルを自前で用意したときに、何も設定を加えていない場合はカスタムセルの高さが自動的に変わらない。そこで、カスタムセルの高さに制約を加える方法について、自分なりにまとめた。 [図1] カスタムセルの画面 目次 この記事の概要 問題解決の指針 解説①: IBOutletのTableViewを使う方法 解説②: estimatedRowheightとautomaticDimensionを使う方法 まとめ 問題解決の指針 TableViewでカスタムセルを使うときに、高さを変えたい時ってありますよね。 例えば、TwitterやインスタグラムのようなSNSはTableViewを使っており、コンテンツの長さや高さによって、 そのセルの高さも変わっている。しかしカスタムセルの高さ変更は、Swiftではなかなか難しく、設定を加えないことでトラブルもよく起こる。 さて、カスタムセルの高さを変えたい時はどうすればいいのだろうか。 カスタムセルの高さを変えたい場合は、tableviewが入ったViewControllerに、このコードを書いてあげると、いいのである。 ポイントとしては、 ① @IBOutletのtableViewに、名前をつけてあげること。 ②  そのtableviewにestimatedRowHeightと, rowHeightの二つを定義するコードを書いてあげること。 class ViewController : UIViewController { @IBOutlet weak var tableView : UITableView ! override func viewDidLoad () { super . viewDidLoad () self . tableView . estimatedRowHeight = 90 self . tableView . rowHeight = UITableViewAutomaticDimension } (以下省略) 以下では、それ

【Swift4】iOSシミュレータでカメラとフォトライブラリが起動しない?試してみてわかったこと

イメージ
この記事の概要 以前同様の問題が発生したためにteratailに投稿したことがあるのだが、ここでももう一度まとめておこうと思う。一応、2018/11/19に私が投稿したteratailの記事を貼っておくので、 興味のある方はご一読ください。 iOSシミュレータでカメラとフォトライブラリが起動しない (https://teratail.com/questions/159144) 目次 この記事の概要 目次 実現したいこと 問題 解決策1:シミュレーターでうまく行かない場合 解決策2:実機でうまく行かない場合 まとめ 参考文献 実現したいこと Swift4のプロジェクトで、カメラ機能の実装を行いたいと思った。また、撮影した写真をアプリから呼び出せるようにアクションコントローラーを追記して、もしエラーが発生しているようなのであれば例外処理エラーでユーザーに知らせる、といった機能を実装するために、プロジェクトを作成した。そのためにSwiftで以下のようなコードを書いた。 class AddItemViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {   (中略)   @IBAction func selectImage(){   let actioncontroller = UIAlertController(title: "画像を選択", message: "選択してください", preferredStyle: .actionSheet)   let cameracontroller = UIAlertAction(title: "カメラ", style: .default) { (action) in if UIImagePickerController.isSourceTypeAvailable(.camera) == true{  let picker = UIImagePickerController() picker.sourceType =

【Rails5】 FATAL: database does not existに対処する方法

イメージ
この記事の概要 プロジェクトを立ち上げて[FATAL: database does not exist]エラーに直面したので、解決法を書いておこうと思う。 [図1] 「FATAL: database does not exist」(今回発生したエラー) 目次 この記事の概要 目次 やろうと思ったこと エラーの分析 解決策 まとめ 参考文献 やろうと思ったこと プロジェクトを$rails newコマンドで作り、データベースをマイグレートしようとした。 するとこんなエラーが出た。 $ bin/rails db:migrate rails aborted! ActiveRecord::NoDatabaseError: FATAL: database "Twitter_Sample_development" does not exist /Library/Ruby/Gems/2.3.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:696:in `rescue in connect' /Library/Ruby/Gems/2.3.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:691:in `connect' /Library/Ruby/Gems/2.3.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:223:in `initialize' (以下略) データベースを作ろうとすると、rails先生にabortedされてしまう。いまいち原因がわからない。 エラーの分析 「FATAL: database does not exist」は正しく書くと、「FATAL: database 'データベース名' does not exist」と表記されている。  'データベー

【Rails5・6】新しいプロジェクトを作る時の備忘録

この記事の概要 Railsプロジェクトを作る方法だが、何回やってもあまりちゃんと覚えられないので記事に残すことにした。この記事では、Railsプロジェクトを作る際はどのようにして作ればいいのかを簡単にまとめていきたい。 目次 新規Railsプロジェクトの作成 ディレクトリの移動 データベースの作成 サーバを立ち上げる まとめ 関連記事 新規Railsプロジェクトの作成 まずはターミナルを起動し、Railsプロジェクトを作成するコードを書く。 $ rails new [プロジェクトネーム(任意の名前でOK)] プロジェクト名の下に「-d postgresql」と記入することで、ローカル環境でもpostgresqlを使 用することができる。 $ rails new [プロジェクトネーム(任意の名前でOK)] -d postgresql SQLで代表的なものには、「MySQL」「SQLite」などがある。 ここでは「Twitter_sample」というアプリを作るため、 $ rails new Twitter_sample -d postgresql という風に打ち込めばOK. すると、長いコードがズラズラと自動生成されていく。 ディレクトリの移動 $ cd [プロジェクト名] 「cd」の後に「プロジェクト名」を入力することで、そのプロジェクト名のある場所に移動することができる。 今回は、先ほど作ったTwitter_sampleという場所に移動したいため、 cdの後に一つスペースを空けて、「Twitter_sample」と入力すれば良い。 $ cd Twitter_sample 話は脱線するが、文字の打ち間違いなどにより、思ってたのと違うディレクトリに移動したい時は、 $ cd とだけ打てばいい。 データベースの作成 お目当のフォルダにcdを使って移動できたら、データベースを作る。 $ rails db:create このコードを打てば、データベースがまたもや勝手に作られていく。 サーバーを立ち上げる $ rails s ここでは「bin/rails s」と打っても良い。 すると、デフォルトのブラウザにRailsのオフィシャルペ

【Rails5】SyntaxError: (): mapping values are not allowed エラーの解決法

この記事の概要 SyntaxError: (<unknown>): mapping values are not allowed 上記エラーに対応するために調べたところ、.ymlファイルのインデントが原因であることがわかった。 目次 この記事の概要 目次 試そうとしたこと エラーの分析 ja.ymlを見てみる 解決策 まとめ 試そうとしたこと Rails5で簡単なTaskアプリケーションを作って学んでいたのだが、 SyntaxError: (<unknown>): mapping values are not allowed  エラーにハマった。 エラーの分析 can not load translations from /Users/*****/Task_App/config/locales/ja.yml: # ): mapping values are not allowed in this context at line 15 column 7 どうやらja.ymlにエラーがあるらしい。 ymlファイルは、エラーメッセージが日本語を出すためのrawファイルであり、 GitHubのrails-|18nリポジトリにあるファイルを適当にダウンロードしたものである。 ja.ymlなので日本語設定である。 en.ymlだと英語設定になる。 ja.ymlファイルを見てみる (中略)    models:    task: タスク    attributes:    task:          id: ID    name: 名称    description: 詳しい説明    created_at: 登録日時    updated_at: 更新日時 んー? 15行目あたりにエラーがあるらしいが、特に変わったところは見当たらない。 何がおかしいのだろうかと思って色々と検索してみた。 解決策 どうやら、ymlファイルにはスペースの数が決まっているようだ。 一番最初の階層のスペースゼロだとすると、 最初の階層はスペース無し。二番目の階層は半角スペース2つ 三番目の階層は半角スペース4つに する必要があるらしい。 今回のケースだと,