初めまして。
Swift初心者です。初歩的な質問かもしれませんがよろしくお願いいたします。
#前提
・NvigationController内のNavigationbarで画面遷移を管理しています。
・Navigationbar上に「次へ」「戻る」の二種類が基本的に配置されており、ユーザーはいつでも前の画面に戻ることが可能です。
画面①から「次へ」ボタンを押下後、画面②に遷移し、その後画面②の「戻る」ボタンを押下すると画面①の「次へ」ボタンがグレーアウトしています。
ボタンのEnabledはtrueのままのようで、グレーアウトした「次へ」を押下すれば画面②に遷移可能です。
おそらく、「戻る」を押下して②→①に遷移した際に画面①の「次へ」ボタンのalpha値が半分ほどになっているのではないかと思います。
#課題
・Navigationbarの仕様なのか、不明ですが、勝手にグレーアウトするのをやめたいです。
・常にalpha=1.0とする方法も考えましたが、画面①では、所定の操作を完了するまで「次へ」ボタンのEnabled = bool となります。
よろしくお願いいたします。
対象コード
import UIKit ///////<summary> ///////頭痛の色を決めるページ class HeadacheMake021: UIViewController { @IBOutlet weak var headMake021View: HeadacheMakeTextView! @IBOutlet weak var colorEditNib: ColorEdit! @IBOutlet weak var headacheSideNib: HeadacheSide! var isFirst = true // 最初の処理かどうか var headMakeNo021 : String! = ""//ページ番号 var headMakeText021 : String! = ""//ページ説明テキスト //var headacheImgF011 : UIImageView! //タップ操作で配置されるimage変数 背面用 var headacheImgS021 : UIImageView! //タップ操作で配置されるimage変数 側面用 var defaultSImg = UIImage(named:"headacheBase01.jpg") //var headacheImgSize: CGSize! // ////////////////////////////////////////////////////////////////////// var headacheFPos :CGPoint!//配置場所を配置したheadachePointに対する座標に変換する変数 var headacheFPosratio: CGFloat! //配置場所の比率計算用変数 headacheFrontNibの縦方向のサイズを格納 var headacheImgFHeigt: CGFloat! //配置場所の比率計算用変数 headacheFrontNibの縦方向のサイズを格納 var headacheImgFSize: CGSize! // //var headacheImgKind: UIImageView! //配置したUIImageの種類を格納 var headacheImgFKind: String! var headacheSPos :CGPoint!//配置場所を配置したheadachePointに対する座標に変換する変数 var headacheSPosratio: CGFloat! //配置場所の比率計算用変数 headacheFrontNibの縦方向のサイズを格納 var headacheImgSHeigt: CGFloat! //配置場所の比率計算用変数 headacheFrontNibの縦方向のサイズを格納 var headacheImgSSize: CGSize! // //var headacheImgKind: UIImageView! //配置したUIImageの種類を格納 var headacheImgSKind: String! ////////////////////////////////////////////////////////////////////// override func viewDidLoad() { super.viewDidLoad() headMakeNo021 = "2" headMakeText021 = "あなたの頭痛は\n何色をしていますか?" headMake021View.headMakeNo.text = headMakeNo021 headMake021View.headMakeText.text = headMakeText021 headacheImgS021 = UIImageView(frame: CGRect(x: -300, y: -300, width: 30, height: 30)) headacheImgS021.frame.size = headacheImgSSize headacheImgS021.image = defaultSImg headacheImgS021.tintColor = UIColor(red: 131/255 , green: 173/255 , blue: 196/255 , alpha: 1.0) headacheImgS021.image = headacheImgS021.image?.withRenderingMode(.alwaysTemplate) self.colorEditNib.colorEditDelegate = self if (headacheSPos != nil ){ print("DEBUG_PRINT: if文内配置") self.headacheSideNib.baseView012.addSubview(headacheImgS021) } } override func viewDidAppear(_ animiated: Bool){ if isFirst { isFirst = false headacheSPosratio = headacheSideNib.baseView012.frame.height / headacheImgSHeigt headacheImgS021.frame.size = CGSize(width: headacheImgS021.frame.size.width * headacheSPosratio, height: headacheImgS021.frame.size.height * headacheSPosratio) headacheSPos = CGPoint(x:headacheSPos.x * headacheSPosratio, y:headacheSPos.y * headacheSPosratio) } headacheImgS021.center = headacheSPos } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { print("DEBUG_PRINT: seguepreoare021→031") // segueから遷移先のHeadacheMake031を取得する let headacheMake031:HeadacheMake031 = segue.destination as! HeadacheMake031 headacheMake031.color031 = headacheImgS021.tintColor // 遷移先のHeadacheMake012で宣言している各変数に頭痛の配置座標・比率計算用のサイズ・配置している場所を代入して渡す headacheMake031.headacheFPos = headacheFPos//座標 headacheMake031.headacheImgFHeigt = headacheImgFHeigt //比率計算用高さ headacheMake031.headacheImgFSize = headacheImgFSize headacheMake031.headacheImgFKind = headacheImgFKind //種類 headacheMake031.headacheSPos = headacheSPos//座標 headacheMake031.headacheImgSHeigt = headacheSideNib.baseView012.frame.height //比率計算用高さ headacheMake031.headacheImgSSize = headacheSideNib.baseView012.frame.size headacheMake031.headacheImgSKind = headacheImgSKind //種類 } } extension HeadacheMake021: ColorEditDelegate { func changeImageViewColor(color: UIColor) { headacheImgS021.tintColor = color } }
あなたの回答
tips
プレビュー