質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

1917閲覧

swiftのUIButtonが動かない (storyboard)

masamasamasa

総合スコア95

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/05/01 08:49

編集2019/05/02 10:49

#困っていること
swiftのUIButtonが動かない (storyboard)
イメージ説明

#自分で調べたこと

  • 親のUIViewからbuttonがはみ出してないか
  • 変なconstraintはないか
  • 変なconstraintが原因でheightが0になっていないか

その他はよくわかりませんでした。

#storyboard
イメージ説明
イメージ説明
イメージ説明

デバックエリア

updateStateFollowBtn configureFollowBtn

#code
反応しない箇所 -> addTarget

Swift

1 2import UIKit 3class HeaderProfileCollectionViewCell: UICollectionViewCell { 4 5 @IBOutlet weak var profileImageView: UIImageView! 6 @IBOutlet weak var nameLabel: UILabel! 7 @IBOutlet weak var myPostsCountLabel: UILabel! 8 @IBOutlet weak var followingCountLabel: UILabel! 9 @IBOutlet weak var followerCountLabel: UILabel! 10 @IBOutlet weak var followBtn: UIButton! 11 12 var user: UserModel? { 13 didSet { 14 updateView() 15 } 16 } 17 18 override func awakeFromNib() { 19 super.awakeFromNib() 20 21 profileImageView.clipsToBounds = true 22 profileImageView.layer.cornerRadius = 50 23 24 25 } 26 27 func updateView() { 28 self.nameLabel.text = user!.username 29 if let profilePhotoUrlString = user!.profileImageURL { 30 let profilePhotoUrl = URL(string: profilePhotoUrlString) 31 self.profileImageView.sd_setImage(with: profilePhotoUrl, placeholderImage: UIImage(named: "placeholderImg")) 32 } 33 34 if user?.uid == Api.User.CURRENT_USER?.uid { 35 followBtn.setTitle("edit", for: .normal) 36 }else{ 37 print("updateStateFollowBtn()") // <- 反応する 38 updateStateFollowBtn() 39 } 40 } 41 42 func updateStateFollowBtn() { 43 if user!.isFollowing! { 44 configureUnFollowBtn() 45 print("configureUnFollowBtn()") 46 }else{ 47 configureFollowBtn() 48 print("configureFollowBtn()") // <- 反応する 49 } 50 } 51 52 func configureFollowBtn() { 53 followBtn.setTitle("follow", for: .normal)  // <- 反応する 54 55 // ⬇︎⬇︎⬇︎⬇︎ 反応しない ⬇︎⬇︎⬇︎⬇︎ 56 followBtn.addTarget(self, action: #selector(self.followAction), for: .touchUpInside) 57 } 58 59 func configureUnFollowBtn() { 60 followBtn.setTitle("unfollow", for: .normal)  61 followBtn.addTarget(self, action: #selector(self.unFollowAction), for: .touchUpInside) 62 } 63 64 func followAction() { 65 print("followAction") 66 if !user!.isFollowing! { 67 Api.follow.REF_FOLLOWING.child(Api.User.CURRENT_USER!.uid).child(user!.uid!).setValue(true) 68 Api.follow.REF_FOLLOWERS.child(user!.uid!).child(Api.User.CURRENT_USER!.uid).setValue(true) 69 configureUnFollowBtn() 70 user!.isFollowing! = true 71 } 72 } 73 74 func unFollowAction() { 75 print("unFollowAction") 76 if user!.isFollowing! { 77 Api.follow.REF_FOLLOWING.child(Api.User.CURRENT_USER!.uid).child(user!.uid!).setValue(NSNull()) 78 Api.follow.REF_FOLLOWERS.child(user!.uid!).child(Api.User.CURRENT_USER!.uid).setValue(NSNull()) 79 configureFollowBtn() 80 user!.isFollowing! = false 81 } 82 } 83}

開発環境

MacOS Mojave 10.14.4
Xcode 10.0
Swift 3.0

どうやったら解決できるでしょうか?
もしくはどこらへんが怪しいでしょうか?
すみませんが、よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

自分では対応できそうもなかったので、ファイルを消して最初から書き直すことにしました。
ご迷惑をおかけしました。

投稿2019/05/03 02:38

masamasamasa

総合スコア95

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

followBtnのインスタンスをlazy varで定義しないといけないかもですね。

投稿2019/05/02 16:51

akaakoz

総合スコア183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masamasamasa

2019/05/03 02:37

ご回答ありがとうございます。 ちょっと自分では対応できそうもなかったので、ファイルを消して最初から書き直してやっていました。 lazy var は初めて知ったのですが、これから勉強してみたいと思います。 教えていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問