Swift dismiss時に値を渡してViewControllerを閉じる

遷移元のViewControllerはpresentingViewControllerのオブジェクトに格納されている。 PrevViewControllerから遷移してきたとすると、以下のように記述するとアクセスできる。 let vc = self.presentingViewController as! PrevViewController vc.var1 = "va…

Swift MapViewで長押しした場所のlocationを取得する

てっきりMKMapViewDelegateの中に実装メソッドがあると思ってたら違ってた... UILongPressGestureRecognizerで長押しイベントを検知する必要がある。 let mapView = MKMapView() override func viewDidLoad() { super.viewDidLoad() //長押し時のイベントを…

Swift Viewにジェスチャーリスナーを定義する

View.addGestureRecognizer()を使用する。addするGestureRecognizerはUIGestureRecognizerを継承したオブジェクトとなる。 GestureRecognizerの種類 UITapGestureRecognizer : タップ、ダブルタップ UIPinchGestureRecognizer : ピンチ UIPanGestureRecogniz…

Swift TextView編集時のキーボードに入力完了ボタンを表示する

イメージ 下記例でいうところのDoneボタンを表示する。 実装 ボタン部分の枠はUIToolbarで表示を行うと非常に楽。キーボードとUIToolbarのjoinはinputAccessoryViewで行える。 override func viewDidLoad() { super.viewDidLoad() // ツールバー生成 サイズ…

Swift Firebase Google Authenticationを導入

Firebase側の設定 ログイン方法 > Googleを有効にしておく。 プロジェクトの公開名は認証画面で表示されるアプリ名となる。 アプリの基本設定 podのインストール pod 'Firebase' pod 'Firebase/Auth' pod 'GoogleSignIn' $ pod install $ open FirebaseChat.…

Swift UIVisualEffectViewにViewを追加する

EffectViewに直接addSubviewしようとすると以下のようなエラーが出る。 let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .dark)) visualEffectView.addSubview( UILabel() ) Do not add subviews directly to the visual effect vie…

Swift UIImageデータをbase64エンコードする

UIImageデータをbase64エンコードする エンコード let imageData = image.pngData()! as NSData // for jpg //let imageData = image.jpegData(compressionQuality: 0.8)! as NSData let base64String = imageData.base64EncodedString(options: .lineLength…

Swift segueを使わずにstoryboard上のViewControllerにアクセスする

segueを使わずにstoryboard上のViewControllerにアクセスする。 アクセス対象のViewControllerのIdentifierを定義した上で、storyboard?.instantiateViewController()を使用してインスタンスを取得できる。 override func viewDidAppear(_ animated: Bool) {…

Swift UIActivityViewControllerで簡単にSNSシェアを実装

よくあるこの画面。UIActivityViewControllerを使用すると簡単に実装できる。 シェア画面の起動 UIActivityViewControllerのactivityItemsに各SNSに渡したいオブジェクトをセットすればよい。String、UIImage、URLなどがある。尚、Facebookはテキストのセッ…

Swift UIImagePickerControllerでフォトアルバム、カメラアクセスを行う

info.plist 必要に応じて以下のパーミッションをinfo.plistに記述する。 Privacy - Photo Library Additions Usage Description フォトアルバムに画像を保存 Privacy - Photo Library Usage Description フォトアルバムにアクセス (不要っぽい?) Privacy - …

Swift 特定viewのスクリーンショットをとる

特定Viewのスクリーンショットを撮る。 UIGraphicsBeginImageContextWithOptionsにスクリーンショットを撮る座標と縦横幅を指定する。よって対象のViewのframeを指定すればよい。 UIGraphicsBeginImageContextWithOptions(view.frame.size, false, 0.0) view…

Vue.js issue管理に登録したissueをストレージに保存する

ブラウザを閉じたりリロードした後でも、登録、更新を行ったissueを再度表示できるようにする。 ストレージはローカル内で保存管理するものとし、サーバに送信したり取得したりといったことは行わない。 Vueでの処理 プロパティ issueList が追加、変更され…

Vue.js インスタンスプロパティの変更を監視する

こういったVueオブジェクトが定義されていた場合、arrayListに何らかの操作が行われた時に発火するメソッドを定義できる。 var app1 = new Vue({ el: '#app1', data: { arrayList: [] } }); watch メンバの定義 watchメンバの中に監視するプロパティとchange…

JavaScript ローカルストレージの保存と参照

ブラウザは接続先のドメインごとにWebストレージ領域を割り当てられる。ストレージにはkey,valueの形式で保存可能。 ブラウザが変わればストレージ領域も変わる。 (そういったコードを書かない限り)サーバに送信しない。サーバから操作できない。がCookieと…

Vue.js Vueオブジェクトのライフサイクル

Vueオブジェクトは以下のライフサイクルがあり、各ポイントに応じて処理を実行することができる。 beforeCreate : Vueインスタンスが作成される直前 created : インスタンスの作成が完了 beforeMount : element(el: "id")にマウントされる直前 mounted : ele…

Vue.js issue管理にチケット状態を追加する

イメージ 状態は["new", "assigned", "closed"]の三種類とした。 Vue実装 プルダウンはloop生成 var app1 = new Vue({ el: '#app1', data: { statusList: ["new", "assigned", "closed"], ...略 issueオブジェクトにチケット状態を持つプロパティを追加 meth…

Vue.js issue管理 削除機能を追加した

画面イメージ HTML v-showで表示される要素の中に削除ボタンを設置した。 削除ボタンのv-on:click.stopは.stopをつけることによってli要素のv-on:clickのメソッド呼び出しを抑制できる。これをつけないと親要素のv-on:clickも発火しておかしな挙動になる。 d…

Vue.js 親要素のイベントを抑制する

入れ子になった要素で、親、子ともにv-on:clickなんかのイベントを持っている時、子の要素をクリックすると親の要素のイベントの発火する。 例えばこんなの。親divで何らかのイベント定義あり、divに入ったボタンがあるケース。divがアコーディオンになって…

Swift LINEアプリにメッセージを送信する

line://msgというschemaにメッセージを追記してオプーンすればよい。特にSDK等を入れる必要もない。 テキストメッセージを送信する スキーマは/text 。その後ろに送信したい文字列を追記する。マルチバイトが入る場合、URLエンコードしておく。 let lineSche…

'UIImageJPEGRepresentation' has been replaced by instance method 'UIImage.jpegData(compressionQuality:)'

swift4.2?くらいからUIImageJPEGRepresentationメソッドはUIImage.jpegDataに差し替えないといけない。 'UIImageJPEGRepresentation' has been replaced by instance method 'UIImage.jpegData(compressionQuality:)' 差し替え例 //before UIImageJPEGRepres…

Swift LINEログイン連携

LINEの開発者登録 LINE連携するには開発者登録が必要。以下からLINEアカウントで簡単に登録できる。 LINE Developers ログインすると、まずはプロバイダーを登録してね。といわれるので、案内にしたがって登録する。 次に連携するアプリの登録を行う。登録し…

Swift xibのViewイベントをViewControllerに定義する

xibと対となるViewはレイアウトのみの定義で、イベント着火による振る舞いはViewControllerに書きたいことがある。 HogeView.xibとUIViewを継承したHogeView.swiftというファイルが定義されていたとすると、 HogeView.swift class HogeView: UIView { @IBOut…

Xcode Couldn’t communicate with a helper application.

XcodeからGit操作しようとしたら、 Couldn’t communicate with a helper application. Try your operation again. If that fails, quit and relaunch the application and try again. と表示されて、git initやcommitが出来ない場合がある。 Xcodeアップデー…

Vue.js 簡単なissue管理アプリを作成する

アプリイメージ 入力を行うと 下のエリアにissueが表示 issueタイトルを押下するとコメントが表示される。 複数のissueを登録できる。 削除とステータスの更新は今回では作成しない。 HTMLの記述 入力フォーム部分 今までの復習。各入力部品に対応する値をv-…

Vue.js v-modelとフォーム部品

v-modelの修飾子 v-onと同様、v-modelにも修飾子を記述できる。 .lazy : 入力の完了時にバインドする。 .number : 数値型に変換 .trim : 前後のスペースを取り除く .lazy 入力の完了時(Enterキーの押下やフォームからカーソルフォーカスが外れた時)にバイン…

夏がくると思い出す、打ち上げ花火、下から見るか?横から見るか? と俺

15歳の夏の夜だった。 当時、僕と仲良くしてくれていた異性の学友がいて、毎晩のように飽きもせず、その学友と長電話していた。 自宅の電話だと電話代金がかさみ叱られるので、父親が誰かから粗品で頂いたような放置してあったテレフォンカードを持ち出して…

Vue.js イベントハンドラ

v-on:click 基本形 入力された値をボタン押下でリスト表示する。 <div id="app1" class="frame"> <h1>イベントハンドラ</h1> <input type="text" name="textData" v-model="textData"><button name="send" v-on:click="addData">送信</button> <ul> <li v-for="item in listData">{{item}}</li> </ul> </div> var app1 = new Vue({ el: '#app1', data: { textD…

Vue.js v-forで配列・オブジェクト要素を走査する

v-forで配列要素の走査 配列要素を走査して出力する。 liの部分がmonthList数分、繰り返される。 <div id="app1" class="frame"> <ul> <li v-for="month in monthList">{{month}}月</li> </ul> </div> var app1 = new Vue({ el: '#app1', data: { monthList: [1,2,3,4,5,6,7,8,9,10,11,12] } }); foreach {k,v}ライクな使い方 (value, key)の順…

ニュースクリップ 反トラストが進む米国と最低賃金引き上げの話し

最低賃金3%超引き上げへ 全国平均900円超す www.nikkei.com 題名の通り、最低賃金を引き上げましょう。という話し。 安易に引き上げて大丈夫?韓国は失業率上がったらしくて悪手だったんでは?という不安もあると思うけど、そのロジックは以下の記事で書かれ…

Vue.js v-ifとv-showで表示制御を行う

v-if で要素の出力制御を行う v-ifの値がtrueの時に、要素の表示を行う。 <div id="app1" class="frame"> <h2 v-if="show">v-ifのサンプル</h2> <button v-on:click="show = !show">タイトルを{{buttonLabel}}</button> </div>