ãã®æçš¿ã¯ã Xcodeã®ç¡æ翻蚳ã§ãïŒã¹ããŒãªãŒããŒããæ±ãããã®ããè¯ãæ¹æ³ ã ã¹ã¿ã³ãªã¹ãããã¹ããŒ
å ã®èšäºã®äžéšã®ã³ãŒãäŸã¯å€ããªã£ãŠããïŒSwift 3ã®ãªãªãŒã¹ã«ããïŒã翻蚳ã§å€æŽãããŠããŸãã
Interface Builderã䜿çšããããã®ãã³ããšã³ãã
Appleã¯ãæ°ããXcode 8ã§Interface Builderãå€§å¹ ã«æ¹åããŸããããµã€ãºã¯ã©ã¹ã®äœ¿çšãããçŽæçã«ãªããã¹ããŒãªãŒããŒããæ¡å€§çž®å°ããæ©èœãéåžžã«äŸ¿å©ã«ãªããInterface Builderã§ã®å®å šãªãã¬ãã¥ãŒãçŽ æŽãããã§ãã Interface Builderã®äœ¿çšã«çåãæ±ããŠãã人ã«ãšã£ãŠã¯ãããã¯ãã©ã¹ã«ãªããŸãã
äžæ¹ãå€ãã®éçºè ã¯ãè€éãªããã²ãŒã·ã§ã³ãåãã倧èŠæš¡ãªãã«ãã¹ã¯ãªãŒã³ã¢ããªã±ãŒã·ã§ã³ãäœæããéã«ãInterface Builderã§ãŸã åé¡ãæ±ããŠããŸãã
ãã®èšäºã§ã¯ããããžã§ã¯ãã§ã¹ããŒãªãŒããŒããæäœããããã®ãã¹ããã©ã¯ãã£ã¹ãããã€ã玹ä»ããŸãã Interface Builderããã§ã«äœ¿çšããŠããŸããããããšããã®æ¹åãžã®æåã®äžæ©ãèžã¿åºããŠããã ãã§ããïŒ -ãããã«ããããããã®ãã³ãã¯ããªãã«åœ¹ç«ã¡ãŸãã
1.ããŒã ã§äœæ¥ããŠããå Žåã¯ãç»é¢ããšã«åå¥ã®ã¹ããŒãªãŒããŒãã䜿çšããŸãã ããªããäžäººã§åããŠããŠããããã¯ç¢ºãã«è¯ãç¿æ £ã«ãªããŸãã
ãããžã§ã¯ãã«ã¯ããã®ãããªmain.storyboardãã¡ã€ã«ã1ã€ãããŸããïŒ
ãã¶ã€ããŒã®èŠ³ç¹ããèŠããšããã¹ãŠãåé¡ãããŸãããUIãšããã²ãŒã·ã§ã³ã¯å®å šã«è¡šç€ºãããŸãã ãããŠãããã¯ãŸãã«Interface Builderãäœæããããã®ã§ãã
ããããéçºè ã«ãšã£ãŠãããã«ã¯å€ãã®åé¡ã䌎ããŸãã
- ããŒãžã§ã³ç®¡çïŒ ã¹ããŒãªãŒããŒãã®ããŒãžã®ç«¶åã解決ããã®ã¯éåžžã«é£ãããããå¥ã ã®ã¹ããŒãªãŒããŒãã§äœæ¥ãããšãããŒã ã®ç掻ã楜ã«ãªããŸãã
- ã¹ããŒãªãŒããŒããã¡ã€ã«ã¯èšå€§ã«ãªããæäœãå°é£ã«ãªããŸãã ééã£ãView Controllerã§ããŠã¹ãã¯ãªãã¯ããŠå¶çŽã誀ã£ãŠå€æŽããé »åºŠã¯ã©ããããã§ããïŒ
- ã¹ããŒãªãŒããŒãIDãåView Controllerã«å²ãåœãŠãå¿ èŠããããããã«ãããšã©ãŒãçºçããå¯èœæ§ããããŸããã³ãŒãã§ãã®View Controllerã䜿çšãããã³ã«ããã®IDããããŒãã³ãŒããããå¿ èŠããããŸãã
ãããžã§ã¯ãå ã®ããŸããŸãªã¹ããŒãªãŒããŒããæ¥ç¶ããæ¹æ³ã¯ïŒ 2ã€ã®æ¹æ³ããããŸãã
Xcode 7ã«ç»å Žããã¹ããŒãªãŒããŒãåç §ãžã®ãªã³ã¯ã䜿çšããŸãã
- ã¹ããŒãªãŒããŒããã³ãŒãã§çŽæ¥ãªã³ã¯ããŸãã
æåã®æ¹æ³ã®è©³çŽ°ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã
è€éãªãããžã§ã¯ãã§åºã䜿çšãããŠããããã2çªç®ã®æ¹æ³ã«ã€ããŠèª¬æããŸãã
2.ã¹ããŒãªãŒããŒããã¡ã€ã«ãšé¢é£ããã³ã³ãããŒã©ãŒã¯ã©ã¹ïŒUIViewControllerã®åå«ïŒã«åãååã䜿çšããŸãã
ããã«ãããåœåèŠåãç°¡çŽ åãããã ãã§ãªãã段èœ3ã§èª¬æããããã€ãã®ãå©ç¹ããåŸãããŸãã
3.ã³ã³ãããŒã©ãŒã¯ã©ã¹ã§ã¹ããŒãªãŒããŒããçŽæ¥åæåããŸãã
ã¹ããŒãªãŒããŒããä»ããŠView Controllerãåæåããå Žåã次ã®ã³ãŒãããã衚瀺ãããŸãã
let storyboard = UIStoryboard(name: âMainâ, bundle: nil) let homeViewController = storyboard.instantiateViewController(withIdentifier: âHomeViewControllerâ)
å°ãæ±ãïŒã¹ããŒãªãŒããŒãã«ååãä»ããå¿ èŠããããView Controllerã®ã¹ããŒãªãŒããŒãIDãå¿ èŠã§ãããHomeViewControllerãäœæãããã³ã«ãã®ãã¿ãŒã³ã䜿çšããå¿ èŠããããŸãã
ãã®ã³ãŒããã³ã³ãããŒã©ãŒã¯ã©ã¹èªäœã«è»¢éããã¹ããŒãªãŒããŒãã䜿çšããŠéçã¡ãœããã䜿çšããŠã³ã³ãããŒã©ãŒãåæåããããšããå§ãããŸãã
class HomeViewController: UIViewController { static func storyboardInstance() -> HomeViewController? { let storyboard = UIStoryboard(name: âHomeViewControllerâ, bundle: nil) return storyboard.instantiateInitialViewController() as? HomeViewController } }
åã®ãã³ãïŒåããã¡ã€ã«åïŒã«åŸãã°ãã¹ããŒãªãŒããŒãåã®ãããŒã³ãŒãããé¿ããŠã ã¹ããªã³ã°ïŒèšè¿°:)ã䜿çšã§ããŸãã
let storyboard = UIStoryboard(name: String(describing: self), bundle: nil)
ã¹ããŒãªãŒããŒããã¡ã€ã«ã®ååãã³ã³ãããŒã©ãŒã¯ã©ã¹ãšåãã§ããããšã確èªããŠãã ããã ããããªããšããã®ãããªã¹ããŒãªãŒããŒããžã®ãªã³ã¯ãäœæããããšãããšãã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããŸãã
ããã«ãããã³ãŒããèªã¿ãããããã©ãŒã«ããã¬ã©ã³ãã«ãªããŸãã
class HomeViewController: UIViewController { static func storyboardInstance() -> HomeViewController? { let storyboard = UIStoryboard(name: String(describing: self), bundle: nil) return storyboard.instantiateInitialViewController() as? HomeViewController } }
instantiateInitialViewControllerïŒïŒãä»ããŠView Controllerã«ã¢ã¯ã»ã¹ããå Žåã¯ãInterface Builderã§ãã®View ControllerãinitialViewControllerãšããŠæå®ããŠãã ããã åãã¹ããŒãªãŒããŒãã«è€æ°ã®View Controllerãããå Žåã instantiateViewControllerïŒwithIdentifierïŒ_ïŒã䜿çšããå¿ èŠããããŸã
ããŠããã®ãããªView Controllerã®åæåã«ã¯1è¡ããããŸãïŒ
let homeViewController = HomeViewController.storyboardInstance()
ã·ã³ãã«ã§ããããããã§ãããïŒ
åãã¢ãããŒãã䜿çšããŠãnibãããã¥ãŒãåæåã§ããŸãã
class LoginView: UIView { static func nibInstance() -> LoginView? { let nib = Bundle.main.loadNibNamed(String(describing: self), owner: nil, options: nil) return nib?.first as? LoginView } }
4.ã¹ããŒãªãŒããŒãäžã®ãã©ã³ãžã·ã§ã³ã§ãããžã§ã¯ãããªãŒããŒããŒãããªãã§ãã ããã
ãã€ã³ã1ããã®ã¢ããã€ã¹ã«åŸãã°ã移è¡ã¯ãããŸããããã ããåãã¹ããŒãªãŒããŒãã«è€æ°ã®View Controllerãããå Žåã§ããã»ã°ãšã䜿çšããŠãããã®éã移åããããšã¯ãå§ãã§ããŸããã
- åé·ç§»ïŒã»ã°ãšïŒã«ååãä»ããå¿ èŠããããããèªäœããšã©ãŒã«ã€ãªããå¯èœæ§ããããŸãã ååã®æååãããŒãã³ãŒãã£ã³ã°ããã®ã¯æªãç¿æ £ã§ãã
- if / elseãŸãã¯switchåå²æŒç®åã䜿çšããŠè€æ°ã®ã»ã°ãšãæäœããå Žå ã prepareForSegueã¡ãœããã¯åçŽã«èªã¿åãäžå¯ã«ãªããŸãã
代æ¿æ段ã¯äœã§ããïŒ ãã¿ã³ãã¯ãªãã¯ããŠæ¬¡ã®View Controllerã«ç§»åãããå Žåã¯ããã®ãã¿ã³ã«IBActionãè¿œå ããã³ãŒãã§View ControllerãåæåããŸããããã¯ããã€ã³ã3ããèŠããŠããããã«ã1è¡ã§ãã
@IBAction func didTapHomeButton(_ sender: AnyObject) { if let nextViewController = NextViewController.storyboardInstance() { // initialize all your class properties // nextViewController.property1 = ⊠// nextViewController.property2 = ⊠// either push or present the nextViewController, // depending on your navigation structure // present(nextViewController, animated: true, completion: nil) // or push navigationController?.pushViewController(nextViewController, animated: true) } }
5.ã»ã°ãšãã»ã©ããŸããïŒ ããããèããŠããŸããã
ããã²ãŒã·ã§ã³ã«ã¯ããŠãŒã¶ãŒãåã®ç»é¢ã«æ»ãããšãå«ãŸããå ŽåããããŸãã
ããããééãïŒæ°ãããã©ã³ãžã·ã§ã³ã䜿çšããŠãåã®View Controllerã«ç§»åããŸãã ãã®ãããªé·ç§»ã¯ãçŸåšã®View Controllerãåé€ããŠä»¥åã®View Controllerã«æ»ã代ããã«ããã§ã«ã¹ã¿ãã¯ã«ããView Controllerã®æ°ããã€ã³ã¹ã¿ã³ã¹ãäœæããŸãã
iOS 7以éãInterface Builderã§ã¯ãããã²ãŒã·ã§ã³ã¹ã¿ãã¯ããå·»ãæ»ããããšãã§ããŸãã
ã»ã°ãšã®å·»ãæ»ãã«ãããåã®ç»é¢ãžã®æ»ããæå®ã§ããŸãã ãšãŠãç°¡åã«èãããŸãããå®éã«ã¯ããã€ãã®è¿œå æé ãå¿ èŠã§ãããéçºè ãæ··ä¹±ãããã ãã§ãã
- éåžžããã¿ã³ã®ã¢ã¯ã·ã§ã³ïŒã¢ã¯ã·ã§ã³ïŒãäœæãããšãInterface Builderãã³ãŒããäœæããŸãïŒ IBAction ïŒã ãã®å ŽåããCtrlããæŒããªãããã¿ã³ãããExitãã«ã¢ã¯ã·ã§ã³ããã©ãã°ããåã«ãã³ãŒãããã§ã«èšè¿°ãããŠããããšãäºæ³ãããŸãã
- éåžžããã¿ã³ã®ã¢ã¯ã·ã§ã³ãäœæãããšããã®ã¢ã¯ã·ã§ã³ã®ã³ãŒãã¯ããã¿ã³ãå±ããåãã¯ã©ã¹ã«äœæãããŸãã å·»ãæ»ãã»ã°ãšã®å Žåããã®é·ç§»ãçºçããView Controllerã®ã¯ã©ã¹ã§ã³ãŒããèšè¿°ããå¿ èŠããããŸãã
- prepareForUnwindã¡ãœããã«ã¯ã prepareForSegueã¡ãœãããšåãæ¬ ç¹ããã¹ãŠãããŸãïŒåã®æ®µèœãåç §ïŒã
ãã£ãšç°¡åãªæ¹æ³ã¯äœã§ããïŒ
ã³ãŒãã§ãããè¡ãæ¹ãç°¡åã§ãããã¿ã³ã®å·»ãæ»ãã¢ã¯ã·ã§ã³ãäœæãã代ããã«ãéåžžã®IBActionãäœæãã dismissViewControllerãŸãã¯popViewControllerã䜿çšããŸãïŒããã²ãŒã·ã§ã³ã«å¿ããŠïŒã
@IBAction func didTapBackButton(_ sender: AnyObject) { // if you use navigation controller, just pop ViewController: if let nvc = navigationController { nvc.popViewController(animated: true) } else { // otherwise, dismiss it dismiss(animated: true, completion: nil) } }
ä»æ¥ã¯ä»¥äžã§ãã èªåã«åœ¹ç«ã€ãã®ãèŠã€ããŠã»ããã
翻蚳è ããïŒ
ãã®èšäºã§èª¬æããæ¹æ³ã®ãããã§ãçŸåšã®ãããžã§ã¯ãã§ã¹ããŒãªãŒããŒãã䜿çšããŠäœæ¥ãå€§å¹ ã«ç°¡çŽ åããŸããã ç§ãåç¬ã§äœæ¥ããŠããé-ãã¹ãŠã¯ããŸããããŸããããä»ã®éçºè ãç»å Žãããšããã«-ã¹ããŒãªãŒããŒãã§ã®äœæ¥ã¯æ¬åœã«å°çã«ãªããŸããã 絶æãããç§ãã¡ã¯å®è³ªçã«ããããæ¹åŒãã«åãæ¿ããŸããïŒãããããæž¡ããã»ã¯ã·ã§ã³ã§èªãããšãã§ããŸãïŒã
ãã¡ãããçæ³çã«ã¯ãé ããæ©ããVIPERã«æ¥ãå¿ èŠããããŸãã ããããããã¯å¥ã®æçš¿ã«ãªããŸãã