投稿

5月, 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の設定・下準備は終了です。    2

【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)                          // スクリーンの縦横サイズを取得             let screenWidth: CGFloat = view . frame . size . width             let screenHeight: CGFloat = view . frame . size . height                          // 画像の縦横サイズを取得

【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 つまり、自分自身の解釈だとclass直下に書く変数(今回はselectedNumber)は、viewDidLoad()や@IBAction func関数などで、呼び出される事がほとんどだと思う。 そんな変数を定義する時なおかつarc4randomを使うのであれば