swift static tableView で特定のセルをタップした時の反応を実装
tableview の静的セルをタップした時の動作を実装するには didSelectRow内でindexPath.rowとindexPath.sectionの値をつかってif分岐することで実現できました
今回はこの画像の上から4つ目のセルをタップしたらアラートが出るまでを実装します。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { if indexPath.section == 3{ let title: String = "このアプリを使用するには写真へのアクセスが必要です" let message: String = "" let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) let settingsAction = UIAlertAction(title: "設定", style: .default, handler: { (_) -> Void in guard let settingsURL = URL(string: UIApplicationOpenSettingsURLString ) else { return } UIApplication.shared.open(settingsURL, options: [:], completionHandler: nil) }) let closeAction: UIAlertAction = UIAlertAction(title: "Close", style: .cancel, handler: nil) alert.addAction(settingsAction) alert.addAction(closeAction) self.present(alert, animated: true, completion: nil) } }
今回はindexPath.sectionだけをif 分岐で使いましたが上から画像上から三番目のセルの場合は
if indexPath.section == 2 && indexPath.row = 1
と分岐すれば良いでしょう
アラートの実装はこちらの記事を参考にさせていただきました⬇︎
privacy policy
プライバシーポリシー(個人情報保護方針)
デベロッパー Ryusuke Uchida(以下、当運営者)および
サクメモ(以下、当アプリ)は、利用者からいくつかの個人データを収集します。
当運営者は本人の権利の保護、個人情報に関する法規制等を遵守します。
・当アプリが使用しているアプリケーション解析ツールについて
当アプリでは解析ツール「Google Firebase」を利用しアプリケーションの操作データ及びCookie(クッキー)を収集しています。
トラフィックデータは匿名で収集されており、個人を特定するものではありません。
詳細については「データの保護 - アナリティクス ヘルプ」をご覧ください。
・当アプリに掲載されている広告について
当アプリは第三者配信の広告サービス「Google Admob」を利用しています。
広告配信事業者は、ユーザーの興味に応じた広告を表示するために当アプリの操作データを使用することがあります。
Google Admobに関する詳細は「AdMob および AdSense ポリシー - AdMob ヘルプ」をご覧ください。
・個人情報の管理と利用目的
当運営者は、上記のツール以外で個人を特定すること、そのデータを保持することは行いません。
当アプリ及び当運営者が提供するサービスの改善を行うために、解析ツールを導入しております。
・個人情報の第三者への開示・提供の禁止
当運営者は、ユーザーよりお預かりした個人情報を適切に管理し、次のいずれかに該当する場合を除き、第三者に開示いたしません。
・ ユーザーの同意がある場合
・ ユーザーが希望されるサービスを行なうために当運営者が業務を委託する業者に対して開示する場合
・ 法令に基づき開示することが必要である場合
・個人情報の安全対策
当運営者は、個人情報の正確性及び安全性確保のために、セキュリティに万全の対策を講じています。
・ご本人の照会
ユーザーがご本人の個人情報の照会・修正・削除などをご希望される場合には、ご本人であることを確認の上、対応させていただきます。
・法令、規範の遵守と見直し
当運営者は、保有する個人情報に関して適用される日本の法令、その他規範を遵守するとともに、本ポリシーの内容を適宜見直し、その改善に努めます。
この方針は、事業内容の変更、法令の改正等により、事前に公表することなく任意の時期に変更される場合があります。
・お問い合わせ
個人情報保護方針に関するお問合せにつきましては、下記で受け付けております。
メールアドレス:appkaihatsu_r@yahoo.co.jp
最終更新 2018年11月20日
Privacy Policy
プライバシーポリシー(個人情報保護方針)
デベロッパー名: Ryusuke Uchida(以下、当運営者)および
シャッフルフォト(以下、当アプリ)は、利用者からいくつかの個人データを収集します。
当運営者は本人の権利の保護、個人情報に関する法規制等を遵守します。
・当アプリが使用しているアプリケーション解析ツールについて
当アプリでは解析ツール「Google Firebase」を利用しアプリケーションの操作データ及びCookie(クッキー)を収集しています。
トラフィックデータは匿名で収集されており、個人を特定するものではありません。
詳細については「データの保護 - アナリティクス ヘルプ」をご覧ください。
・当アプリに掲載されている広告について
当アプリは第三者配信の広告サービス「Google Admob」を利用しています。
広告配信事業者は、ユーザーの興味に応じた広告を表示するために当アプリの操作データを使用することがあります。
Google Admobに関する詳細は「AdMob および AdSense ポリシー - AdMob ヘルプ」をご覧ください。
・個人情報の管理と利用目的
当運営者は、上記のツール以外で個人を特定すること、そのデータを保持することは行いません。
当アプリ及び当運営者が提供するサービスの改善を行うために、解析ツールを導入しております。
・個人情報の第三者への開示・提供の禁止
当運営者は、ユーザーよりお預かりした個人情報を適切に管理し、次のいずれかに該当する場合を除き、第三者に開示いたしません。
・ ユーザーの同意がある場合
・ ユーザーが希望されるサービスを行なうために当社運営者が業務を委託する業者に対して開示する場合
・ 法令に基づき開示することが必要である場合
・個人情報の安全対策
当運営者は、個人情報の正確性及び安全性確保のために、セキュリティに万全の対策を講じています。
・ご本人の照会
ユーザーがご本人の個人情報の照会・修正・削除などをご希望される場合には、ご本人であることを確認の上、対応させていただきます。
・法令、規範の遵守と見直し
当運営者は、保有する個人情報に関して適用される日本の法令、その他規範を遵守するとともに、本ポリシーの内容を適宜見直し、その改善に努めます。
この方針は、事業内容の変更、法令の改正等により、事前に公表することなく任意の時期に変更される場合があります。
・お問い合わせ
個人情報保護方針に関するお問合せにつきましては、下記で受け付けております。
メールアドレス:appkaihatsu_r@yahoo.co.jp
最終更新 2018年11月20日
admobのinstitutial広告がすべてのviewControllerで出てしまう(Timerを使用して何秒たったら広告を表示という実装をしてる場合)
前提としてadmobのインスチテューシャル広告をTimer使って表示するようにしてる、と
一つのViewController内でしか設定していないのに
ほかのViewControllerでも表示されてしまうことがある
これを解決するには
TimerをviewDidDisappearでinvalidate()させるのが良い
あと他のviewに行ってから、もう一回もどってまた広告を表示させたい場合はviewDidLoadではなくviewWillAppearを使った方が良いと思います
fileprivate var interstitial: GADInterstitial!
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)//ここの一文書かないと機能しない
self.interstitial = GADInterstitial(adUnitID: testAdMobID)
self.interstitial.delegate = self
self.interstitial.load(GADRequest())
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)//ここの一文書かないと機能しない
timer.invalidate()
}
timerはTimerクラスのインスタンスです
このままだと広告が表示されたときにviewDidDisappearが発動してしまってタイマーが止まりっぱなしになってしまうので
広告を閉じたのを感知するfuncを追加その中にもう一度institutialの設定を整えてさらにタイマーを発動させます
//広告をクリックして開いた画面を閉じる直後
func interstitialDidDismissScreen(_ ad: GADInterstitial) {
self.interstitial = GADInterstitial(adUnitID: testAdMobID)
self.interstitial.delegate = self
self.interstitial.load(GADRequest())
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.updateTimer), userInfo: nil, repeats: true)
}
みづらくてすません
少しでも役に立ったら幸い
`[FIRApp configure];` (`FirebaseApp.configure()` in Swift) could not find a valid GoogleService-Info.plist in your project
admobを使おうとしたらこのエラーが出ました
admobやFirebaseを使うには
GoogleService-Info
をダウンロードしてプロジェクトに追加しなくてはなりません。
それで私はFirebaseのSDK setupにそって確実に進めたつもりでしたがエラーが出ました
`[FIRApp configure];` (`FirebaseApp.configure()` in Swift) could not find a valid GoogleService-Info.plist in your project
アプリのAppdelegate.swiftに
FirebaseApp.configure()
を追加して起動したらこのエラーが出ました
私の問題点は
前にもこのGoogleService-Infoをダウンローどしたことがあったので
ファイル名が「GoogleService-Info-2」になっていたことが原因でした
プロジェクトに追加した「GoogleService-Info-2.plist」をクリックして
(すいませんこの画像ではGoogleService-Info-3となってます)
これが右に出てくると思うのでNameの欄をクリックして名前を「GoogleService-Info.plist」に変えます
そしてエンター
あと下にあるTarget Menbership
のところのチェックボックスにチェックが付いてない状態でも同じエラーが出るので気をつけてください
あと私はパソコン初心者なのでよくわかりませんが
GoogleService-Info-2の名前を変更使用とするときGoogleService-Infoというファイル名は既に存在しています的なエラーが出ると思うのでその場合はGoogleService-Info-2を別のフォルダに移動してから再度名前変更作業をしましょう。
それでRunしたところちゃんとビルドしました
あーぱそこん意味わからん
macのユーザー名を変えようとしたらとても面倒なことになった
macのユーザー名を漢字からローマ字に変えようと思って普通にユーザーとグループの画面からユーザー名のところを変更して再起動したところ全く変わってない
変更するには再起動とか書いてあったのにな
それからものすごい最悪なことが起こりまして、なぜかユーザー名を変更しようとしたユーザーの管理者権限が剥奪されているんですね
だから「変更するには鍵をクリックします」のところ押して管理者の名前とパスワードを入力しても突き返される。
管理者アカウントが存在しなくなってしまったのだ
ネットを調べてみると自分と同じような症状の人がわんさかいて
色々試してみたのですがなかなかうまくいかず
半日くらい使ってようやく解決しましたその解決法が以下2つのやり方を組み合わせたりしてできた
Appleの公式Q&Aみたいなところに投稿されているのもあらかた試しましたがダメでしたねどうしても初期設定画面に行きませんでした
私のos varsionは high sierra10.13.6でした
マック再起動コマンドRでターミナル起動でresetpasswordのやり方はおそらくHigh Sierraではできない。
ということで私の解決方法は
まずmacを再起動させて
コマンド+sでなんか文字がダーーーーって画面に行く
それからenterキーを押して
なんとかなんとかroot #みたいな文が出てくると思うので
その#の直後からコマンドを書いていきます
まずはこれ
mount -uw /
これを入力してenter
mountと-
wと/
の間にはスペースが入ります
すると何行か文が出力されたりされなかったりします
そして
またroot #が出てくるまで待ちます
最低1分は待った方が確実です
それから
rm /var/db/.AppleSetupDone
を#直後に打ち込みます
mと/の間にはスペースが入ります
そしてAppleの前の. ドットを忘れずに
またroot #が出てくるまで待ちますがおそらく出てこないと思いますが念のため3分は待った方がいいと思います
.AppleSetupDone?
ってなってると思うので
それからenterをおしてまた#直後に
reboot
と打ち込みますこれで再起動します
すると
これが出てくればもう勝ったということです。
でない場合は何回か試してみましょう。それでもダメな場合はこのやり方と相性悪いのかもしれません。他のサイトのやり方でもやってみてください。
この画面では仮に作る管理者アカウントの名前とかを設定します全て適当でいいです。
User2とかそんなのでいいです
パスワードもあとでわかりやすいものを適当に入力
ここではいつも使っているAppleIDでいいです2ファクタ認証を使っている人は他の端末に通知が2ファクタの通知が行きます
こんな感じで初期に戻っていますがデータが消えた訳ではないので安心していいです
この画面からまたユーザーとグループの画面に行ったら先ほど作成したアカウントが管理者になていると思うので
変更するには鍵をクリックのところをクリックすれば管理社の欄に先ほど作ったアカウントが表示されているはずです
それから先ほど設定したパスワードを入力して
その他のユーザーに表示されているもともと使っていたユーザー名を選択
このコンピュータの管理を許可にチェックをつけます。
それで再起動します
これで
とりあえず元どおりになったはず
これでできなかった人はご健闘をお祈りします
おやくにたてずすみません
アカウント名を変更すルコとに再チャレンジしたい人は以下のサイトが参考になるかもしれまー
ほんとにもうめんどくさい、、、、なんでユーザー名変えるだけでこんなことになるんだ
これかなり前からある事例らしいけどなんでアップルは対策を取らないのか
Xcode GitHub エラー"Your account does not have permission to access this resource"
xcode10にてgitを利用しようとしたところ"Your account does not have permission to access this resource"
というエラーに遭遇しました
私の問題点はgithubアカウントのe-mailアドレスに脱字がありgithubから送られてくるはずのアカウント認証メールでまだアカウント認証してないことでした
メールで認証が終わってからもう一度最初からやり直すとCreate “プロジェクト名” remoteにてcreateできるようになっていました
あとこの画面で何も出てこない状態はプロジェクトに何も変更加えていないからです。
何かしらコードを記述したりすればここに変更したファイルが出てきます。
あとこのメッセージ
が出てきた時は
下の方にある「Enter commit message here」というところになんでもいいから文字を打ち込めば先に進める