投稿

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

【Swift4】self.dimissが動かない

イメージ
この記事の概要 Swiftにおいて、self.dismissが動かない、機能しない場合の対処法を調べた。 目次 この記事の概要 目次 やろうとしたこと 解決策 まとめ やろうとしたこと 二つの画面を繋ぐViewControllerで、「ボタンを押したら戻る」とい処理を実装したい時、    self . dismiss (animated: true , completion: nil ) を使う人って結構多いんじゃないかな、と思う。 自分もその一人だったのだが、なぜかdismiss君が言うことを聞いてくれなかったので、 症状と解決策をまとめた。 所謂「メモ帳アプリ」を製作していた時のこと。 二つ目のViewControllerに記入した内容がボタンを押したら保存されて、一枚目のTableViewに表示される仕組みである。 だが、二枚目の「投稿する」ボタンを押しても、元の画面に戻ってくれない。       self . dismiss (animated:  true , completion:  nil ) は、ちゃんと書いている・・・。どうしてだろう・・・? [図]メモ帳アプリのstoryboard 解決策    self . navigationController ?. popViewController (animated: true ) 解決策はズバリ、dismissをこちらのコードに変更したことでした。 おそらく、navigationcontrollerでembed Inしてたんですが、それが悪さをしていてdismissを使えなくしていたんでしょう。

【Unity】シーンギズモがデフォルトで表示されない時

イメージ
こんにちは。 先日から Unityを触り始めている私(てぃー)です。 さて、  Unityではデフォルトで表示されている「シーンギズモ」ですが、 新規プロジェクトを立ち上げたところ、表示されていなくて困りました。 ggっても解決策が出てこない...どころか、 シーンギズモっていう単語を使っているページ・解説しているページが出てこない!笑(unity 3dのofficial documentを除く) そう言う訳でちょっと困りましたので、解決策を簡単にまとめてみました〜。 ◇ 目次 ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇  1. シーンギズモってそもそもなんやねん?って話  2. 解決策  3. まとめ  1. シーンギズモってそもそもなんやねん?って話 [図]シーンギズモ シーンギズモはデフォルトのプロジェクトを立ち上げた時に、画面(画面というよりかはScene)の右上に出てくる図のような物体です。赤色・緑色・青色の三角コーンから成立しています。 シーンギズモはとても便利で、「y」とラベルが貼られた緑色のコーンをクリックすると、現在sceneで製作中のオブジェクトを上面から見ることが出来ます。 こう言う風に、[x],[y],[z]の、3つの軸からsceneを見ることができる優れものなんです。  2. 発生している現象と解決策 [図]発生している現象 新規プロジェクトを作ろうとした時に、シーンギズモがデフォルトで表示されるようになるはずだ・・・と思いきや、表示されていなくて困りました。 前述したとおり、色々探したんですが解決策が見つからなくて困った・・・。 [図]解決策 で、どうやって解決したかというと。 [scene]バーにある[2D]ボタンを押すことです! sceneの上部を見ると、デフォルトだと[Shaded]ってなってる場所と、電球やらなんやらのアイコンがある場所のちょうど間に、[2D]ボタンがありますよね! これがオンになっていると、シーンギズモは出てこないみたいです。  3. まとめ でも、なんで2Dモードがオンになってたんだろう・・・と考えていたのですが、 そういえば自分、こ...

【Swift4】Swift初心者に贈る、画面遷移後に値を渡す方法【うまくいかない時は!!!!】

イメージ
Swiftを学んでいく上で、値渡しは避けては通れない関門ですよね。 例えば、画面Aに入力された値[変数X]を、画面遷移後の画面Bに[変数X]を表示する処理とかは、初めてプログラミング言語を触る人では頭の中に???が浮かびまくると思います。 自分も、値渡しは初見時は躓いて出来るようになったのですが、3ヶ月ほど会計試験の資格勉強のためにSwiftを触らなくなったら、全然できなくなっていました(> <;) 数時間の死闘の末、再びなんとか出来るようになったので、 「初心者でもわかる値渡し」を記事にしてみようと思います。 prepare(for:segue)とか、クラスを作ってコード簡略化しようぜ!とか、「ある程度プログラミングに慣れた人向けの」方法はたくさんあるんですが、趣味レベルのアプリであれば、誰でも簡単に実装できるように作っています。 それでは、どうぞ! ◇ 目次 ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇  1. 下準備 [Storyboard 編]  2. コードを書いていく  3. 実行してみた     4. まとめ  1. 下準備 [Storyboard 編] [図] Storyboard 新規プロジェクトを作る方法は割愛します。 main.storyboardを開いて、この2つの画面を作ってみました。 最初の画面はUItextfieldとUIButton、二つ目の画面は全てUILabelです。 実装するイメージとしては、 UIButtonを押したら、UITextFieldに入力された文字がUILabelに表示される処理を想像してもらえればいいと思います。 画面ができたら、 [図] StoryboardのSegue Segueで画面を繋ぎます。 個人的にSegueで繋いでいくのはあまり好きではないのですが、Segueを使わない画面遷移だと値渡しが出来なくなるので、プログラミングが上達するまではお世話になるしかないです!(笑) 重要なポイントは、Segueのidentifierを「 toSecond(任意の名前) 」にしておくことです! これにてStoryboardの設定・下準備は終了です。 ...

【Swift4】Storyboardを使わずに、コードだけでUIImageを表示する方法

イメージ
Storyboardで画像を表示する時に、StoryboardからUIImageのパーツを引っ張って@IBOutlet 接続してコードを書く人は多いと思う。 しかし、一つの画面の中にたくさんの画像がある場合は、その方法を使うとUIImageをたくさんStoryboardに配置する必要があるため、どうしても動作が重くなりがちだし、メモリも食ってしまう。 一枚の画像を置く時や趣味程度のアプリなどでは、この方法を使っても良いと思うのだが、複数の画像を設置する時やビジネスでアプリを製作する場合を見据えて、画像をコードで配置する方法を学んでいても良いのだと思う。 そこで、今回は画像をコードで配置する方法をまとめた。 ◇ 目次 ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇  1. 実現しようとした事  2. 解決策  3. 実行してみた     4. まとめ  1. 実現しようとした事 じゃんけんアプリのタイトルで、タイトル用にダウンロードした画像を中心に表示してみる。 ファイル名は"17431.jpg"としておき、デバイスの中心が、画像の中心と一致するようにし、そのまま画像を縮尺を変えずにデバイスの縦横まで引き伸ばす。  2. 解決策   // UIImage インスタンスの生成             let image1: UIImage = UIImage (named: "17431.jpg" )! //パー             // UIImageView 初期化             let imageView = UIImageView (image:image1)                          // スクリーンの縦横サイズを取得             le...

【Swift4】argument passed to call that takes no arguments の解決策

イメージ
今日、Swiftでじゃんけんアプリを作っていた時に、この「 argument passed to call that takes no argument s 」というエラーが出たのでエラーが出た状況と解決策をまとめていこうと思う。 argument passed to call that takes no arguments ◇ 目次 ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇  1. 実現しようとした事  2. Argument Passed to call that takes no argumentsとはどんなエラー?   3. 解決策     4. まとめ  1. 実現しようとした事 [図] myJankenViewControllerで発生したエラーの詳細  import UIKit   class myJankenViewController: UIViewController {       var selectedNumber: Int ( arc4random ( 2 ))                              !   Argument passed to call that takes no arguments     (以下省略)  } 「グー」「チョキ」「パー」の3種類の出目をCPUが出してくれる、そんなじゃんけんアプリを作っていたのだが、 相手のCPUの出目をarc4random関数で指定してあげようと思ったところ、このようなエラーが出てしまった。  2.  Argument Passed to call that takes no arguments とはどんなエラー?  日本語訳してみると、「 呼び出すために渡される引数は引数を取りません 」というのが妥当だろうか。 技術用語マシマシの英文翻訳は本当に難しい・・・orz つ...

【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...

【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つ 三番目の階層は半角スペー...