(すぐに忘れてしまう自分の為の備忘録です。【Swift4】UITableViewCellにUISwitchをつけたがindexPath.rowを受け取るのが大変だった件。コメントをどうぞUITableViewは便利です。そんなに使いこなせていないけど。Cellを自由にアレンジしたいけどわざわざクラスを作るんはめんどくさいってことで、StoryboardでCellに直接乗せていろいろやってたんだけど、UISwitchがうまくかない。具体的にはスイッチのイベントは受け取れるけどそれが何番目のセルがわからない。同じ悩みが書いてあるところはいろいろと有った。TableViewに貼り付けたスイッチのインデックスを取得する方法|teratailしかし、どうにもスマートでない感じ。最終的に参考にさせてもらったのはこちらのサイト。SwiftaccessoryViewを使うのがポイントでした。UITableViewCellにUISwitchを入れる。//タグの値にindexPath.rowを入れる。Bool//タグの値にindexPath.rowを入れる。{print(sender.tag)print(sender.isOn)}インデックス番号がわからないとスチッチつける意味ないですよね。/(^o^)\うじゃうじゃ。BlackField【Swift4】時刻と分と曜日でアラームの日時を設定する。コメントをどうぞアプリのアラーム関係で時刻の取扱は鬼門だ。うまく行った試しがない。頭の中もこんがらがりまくりだ。ゆーてても仕方がないので先人たちの知恵とXcodeの保管機能を駆使してやってみた。Qiita時、分、曜日を指定すると次の曜日のその時刻が出てくる。playGroundをつかってやってみた。曜日と時刻を指定して次の曜日のその時刻を導き出す。//目的の時刻と曜日を設定。//今日の年月日時分、曜日を取り出す。//今日の曜日を取り出す。//通知する日時を設定。//date型に変換。UIKit//目的の時刻と曜日を設定。//今日の年月日時分、曜日を取り出す。//今日の曜日を取り出す。weekday!))}//通知する日時を設定。0//date型に変換。fireDateComponents)!アラームに設定するのはまたこのあとの話...。BlackField【Swift4】【Objective-C】UNUserNotificationCenterで通知の許可をもらう。コメントをどうぞ毎度のことながら自分用の劣化コピー備忘録ブログです。自分がメインで手を入れているアプリはObjective-Cで作って徐々にSwiftに置き換わっています。そんな中でlocalNotificationがiOS10以降でdepricatedになりUNUserNotificationCenterを推奨されたので調べてみました。DevelopersIOまずUNUserNotificationCenterを使う前提としてUserNotifications.frameworkが必要です。AppDelegateはObjective-CなんでObjective-Cで書きます。UserNotificationをインポートしてデリゲートをセットします。{~略~次にUNUserNotificationCenterのユーザーに対する許諾をもらう部分です。//バッジ、サウンド、バナーの許可を求める。launch.//バッジ、サウンド、バナーの許可を求める。registerForRemoteNotifications];//これはリモート通知の場合に要るのかな?以上でアプリがバックグランドの時はローカル通知を受けれますが、フォアグラウンドでも通知が受けれるようにするには下記のメソッドを追加します。アプリがフォアグランドにいた場合の通知動作を指定する。アプリがフォアグランドにいた場合の通知動作を指定する。|UNNotificationPresentationOptionAlert);};viewControllerはほぼSwiftに置き換わってるのでObjective-Cでのテストはしていません。以下は参考サイトからのコピペですすみません。withCompletionHandler:nil];}追記。swiftで通知の許可を貰う場合。QiitaUserNotifications.frameworkを入れるのは上記と同じ。//フォアグラウンドで受け取るにはデリゲートも。//フォアグラウンドで受け取るにはデリゲートも。didFinishLaunchingWithOptionsで許可を求めます。//通知許可のRequest。launch.//通知許可のRequest。true}フォアグラウンドでの通知の受け取りは以下のMethodを実装。通知バナー表示、通知音の再生を指定}テスト用に5秒で鳴る通知。nil)上記をviewWillApperあたりに入れると、開くたびに5秒後に鳴るテストが出来ます。referenceというエラー?コメントをどうぞKotlinに手を出しました。\(^o^)/未だにSwiftもまともに使えてないですが、Androidアプリも作りたいなーってことでボチボチと勉強を始めます。本を一冊買ってきて写経から始めます。(-人-)買った本はこちら。Studioのインストールから初期設定まで良い感じです。StudioはXcodeとはやはり使い勝手がちがって戸惑うところも多いですね。インストールから、HelloWorldを終わっていよいよ簡単なアプリを作っていくところで本に出てないエラーで引っかかりました。じゃんけんアプリを作っていて、画像を配置し終わって、コードを書くところです。上記の本を持ってる人だったら、127ページ辺りです。Rが赤い字になっていて何らかのエラーを起こしているようでそこで数時間悩んでしまったのでその備忘録です。ぐぐってみるとR.javaがないって事らしい。それは自動インポートされるもので手動で入れるものでもないらしい。XMLが間違ってるとR.javaはインポートされないとかなんとか。MainActivity.ktのコードを書いていてのエラーなので、activity_main.xmlをひらいてテキスト表示でコードで見てもエラーはない。良く見て調べていくと、activity_main.xmlではなく、activity_result.xmlの方でエラーが見つかった。画像ボタンの幅や高さの数値の単位を付けていないことが原因らしい。そのくらい自動で直してくれよと思わんでもないが、そういう仕様ならば仕方がない。数値にdpをつけて修正。Projectを選ぶとエラーが無くなった。Xcodeとはいろいろとお作法が違うので大変だが、それもまた楽し!ということにしておこう。BlackField【Swift4】縦長のスクロール画面をscrollViewとstackViewを使って作ると便利だった。コメントをどうぞ設定画面とか縦長でスクロールする画面を作りたい時ってあるじゃないですか。テーブルビュー使うのめんどくさいな、みたいな。そんなときに便利なやり方です。一応の完成形はこんな感じ。Viewを配置します。Constraintsで上下左右全てのマージンを0とします。Constraintsで上下左右全てのマージンを0とします。Viewのコンテントサイズの制約がないためエラーがでます。Widthで横幅を揃える制限をつけます。Viewの高さが決まります。SpacingにしてSpacingを0にします。Viewの高さが決まります。AreaからSuperviewに変えます。↓対象をSuperviewに変えて↓マージンを0にします。これで上下のズレがなくなります。追記終わり〜〜さて、ここから縦長な画面にします。sizeを「freeform」にして、heightを設定します。1200にしてみました。StackViewに高さが200の子Viewを6個入れて分かりやすように色を付けてみました。これでアプリを起動すると綺麗にスクロールしました。\(^o^)/これだけのことがコードを一行も書かずにできるってすごいなーと思います。BlackField【Swift4】NSDictionaryを要素に持つNSMutableArrayをDictionaryのKey順にソートコメントをどうぞ自分は独学でiPhoneアプリを作っています。初心者向けのSwiftの本を数冊とあとはインターネットで検索して調べています。C言語の基礎知識とかはまったくないです。Developerなんちゃらを読んでもさっぱり理解できません。やりたいことが決まって大体のやりかたはネットで調べれば基本的なことはたいてい出てきますが、たまにこの人どーやって調べてこのやり方にたどり着いたんだろうと思うことがたまにあります。今回もそんな感じです。自分はすぐに忘れてしまうし、先人のブログが消えるとわからなくなるのでここに劣化コピーを載せています。今回は、配列に入ったディクショナリをその要素でソートしたかったんですが、なかなかやり方が分からず難儀しました。今回の参考サイトはこちら。I/O適当に調べながらプレイグラウンドでコードを書いたので冗長だったりするかも。[sort_descriptor])print(array)ほんとこーゆーのってどうやってしらべてるんだろう?とりあえずなんとかなってよかった。BlackFieldアイビー・リーの25,000$のアイデア。夢を100個書きだそう。【Swift5】UIPickerViewで2列のピッカーを作る。【Swift4】レビューのリクエストをする。View】広告を消したり表示したりする。AdMob用に新しいアプリIDとユニットIDを取得する。