
ããã¯ãiPadããã³iPhoneäžã®iOS 9ã®
Split View Controllerããã³
Popoverã®é©å¿åäœã«é¢é£ãã
ãã¥ãŒããªã¢ã«ã® 2çªç®ã®éšåã§ããã
Size Classesã³ã³ã»ããã«ãã£ãŠå¯èœã«ãªããŸããã ãã¬ãŒãã³ã°ã¯ãã¯ã©ãŠãããŒã¹ã®åçã¹ãã¬ãŒãžãµãŒãã¹ã§ãã
Flickr.comãµãŒããŒãš
é£æºããå®çšçãªã¢ããªã±ãŒã·ã§ã³ãSwiftã§äœæããããšã§æ§æãããŠããŸãã
æåã®éšåã¯ã
ãã¹ã¿ãŒã®è€éããç°ãªããAdaptive
Split View Controllerãš
Popoverã䜿çšããéçºè
ã®èŠ³ç¹ããã®5ã€ã®èå³æ·±ãã±ãŒã¹ããªã¹ãããŠããŸãã
詳现ã¯ã©ãã§ãåã-Navigation
Controllerã«æ¿å
¥ãããåçç»åã衚瀺ããããã«èšèšãããå¯äžã®
Image View Controller ïŒ
1.ã¯ã©ã·ãã¯ããŒãžã§ã³ïŒ
ãã¹ã¿ãŒã® 1ã€ã®èŠçŽ ã
Navigation Controllerã«æ¿å
¥ïŒå€ãã®å Žåãããã¯
Table View Controllerã§ã ïŒ
2.
Navigation Controllerã«æ¿å
¥ãããå€ãã®
Table View Controllerã¢ã€ãã
3.
ãã¹ã¿ãŒãšããŠã®
Tab Bar Controller4.ç°ãªã
ãµã€ãºã¯ã©ã¹ã®ããã€ã¹ã®ç°ãªãUIããã³ç°ãªããŠãŒã¶ãŒã¯ã©ã¹ã®ã±ãŒã¹ã¯ããã§ã¯èæ
®ãããŸããããã¢ã€ãã¢ã¯
ãiOS 9ã®2ã€ã®ã¹ããŒãªãŒããŒããåããé©å¿ã€ã³ã¿ãŒãã§ã€ã¹ãã§èŠã€ããããšãã§ããŸãã
5.ã¢ãããã£ã
ããããªãŒããŒæåã®éšåã§ã¯ãSwiftã§åºæ¬çãªå®éšã¢ããªã±ãŒã·ã§ã³ãäœæããã±ãŒã¹1ã2ã«æ¡åŒµããŸããã ãã®èšäºã§ã¯ãå®éšã¢ããªã±ãŒã·ã§ã³ãããã«è€éã«ããã±ãŒã¹3ããã³5ã«æ¡åŒµããŸãããã¹ãŠã®ãªãã·ã§ã³ã®ã³ãŒãã¯
Githubã«ãããŸãã
3.ãã¹ã¿ãŒãšããŠã®Tab Bar Controller
ã¢ããªã±ãŒã·ã§ã³ãæ¹åãã
NSUserDefaults
ã¹ãã¬ãŒãžå
ã®ãæè¿è¡šç€ºããããåçãèšæ¶ããïŒã€ãŸãããã®ã¢ããªã±ãŒã·ã§ã³ã®èµ·åæã«çµ¶ããä¿åããå¿
èŠãããïŒãŠãŒã¶ãŒã«å¥ã®ã¿ã
Bar Controllerã§è¡šç€ºããæ©äŒãæäŸããŸãã ãããè¡ãã«ã¯ã以åã®
AdaptiveSplitViewController2Swiftã¢ããªã±ãŒã·ã§ã³ã«åºã¥ããŠãæ°ãã
AdaptiveSplitViewController3Swiftã¢ããªã±ãŒã·ã§ã³ãäœæãã
Tab Bar Controllerãã¹ããŒãªãŒããŒãã«è¿œå ããããã«ä»éãã
View Controllerãåé€ãã代ããã«
Navigation Controllerã«æ¿å
¥ããã
ã«ã¡ã©ãã³ãšãæè¿ã®ããã®ã衚瀺ããããã«èšèšãããå¥ã®
Resentsç»é¢ãã©ã°ã¡ã³ããæ¥ç¶ããŸãåçãš
Navigation Controllerã«ãæ¿å
¥ïŒ

ã¢ããªã±ãŒã·ã§ã³ãèµ·åããiPadã§ãã¹ãŠãæ£åžžã«åäœããããšã確èªããŸãã
ã³ã³ãã¯ãå¹
ã¢ãŒãã®ãã¹ãŠã®iPhoneã§ã¯ã
ImageViewController
ã䜿çšããç»åã®ç»åãã¿ã€ãã«ä»ãã§ç»é¢ã«è¡šç€ºãããŸãããããã²ãŒã·ã§ã³ããŒãè¿œå ã®ãã¿ã³ã¯è¡šç€ºãããŸããã ããããæãæ²ããããšã¯ããã®ç»é¢ããã©ãã«ã移åã§ããªãããšã§ãã
SplitViewControllerã¯
Detailã®ã¢ãŒãã«ãã¥ãŒãæäŸãã
Tab Bar Controllerãä»ããŠ
Masterãå¶åŸ¡ããããã
SplitViewControllerã¯
ImageViewController
ã
Masterã®
Navigation Controllerã®ã¹ã¿ãã¯ã«
é
眮ã§ããªãããšã瀺åããŠããŸãã ãã®ç¶æ³ãä¿®æ£ããããã«ã
ãã¹ã¿ãŒã® Navigation Controllerã¹ã¿ãã¯ã«
ImageViewController
ãã
ã³ã³ãã¯ãå¹
ã¢ãŒãã®
showDetailViewController
ããªã²ãŒãã®
showDetailViewController
ã¡ãœããã§ãããå®è¡ã§ããŸãã
ãŸãã
ã³ã³ãã¯ãå¹
ã¢ãŒããå®çŸ©ãã
Masterã® Navigation Controllerã
ååŸããŸãã 次ã«ã
ImageViewController
ãæœåºããããã
Masterã® Navigation Controllerã¹ã¿ãã¯ã«å
¥ããŠãç»é¢ã«è¡šç€ºããŸãã
AppDelegate.swift
true
ãè¿ããšããããšã¯ã
SplitViewController
ã
SplitViewController
å¶åŸ¡ããŠã¯ãªããªãããšãæå³ããŸãã ããã§ã
ã³ã³ãã¯ãå¹
ããã€ã¹ã®åçã®ç»åãæ£ãã衚瀺ãããŸããNavigationControllerã®ããã«æ»ããã¿ã³ãšã¹ã©ã€ãã䜿çšãããšãã¢ãŒãã«ã«è¡šç€ºãããã«é¢ããããšãã§ããŸããã

ãããã
ImageViewController
ã
Masterã® Navigation Controllerã¹ã¿ãã¯ã«è¿œå ããã®ã§ãã©ã³ãã¹ã±ãŒãã¢ãŒãã«åãæ¿ãããšãã«
Master㧠ImageViewController
ãååŸã§ããŸãããã¡ãããããã¯åãå
¥ããããŸãã
ImageViewController
ã¯
Detailã®ä»£ããã«ã®ã¿è¡šç€ºãããããã§ãïŒ

ãããã£ãŠãã©ã³ãã¹ã±ãŒãã¢ãŒãã«åãæ¿ãããšãã¯ã
ãã¹ã¿ãŒã® Navigation Controllerã¹ã¿ãã¯ãã
ImageViewController
ãåé€ããå¿
èŠããããŸãã
AppDelegate.swift
åé€ã
imageURL
ã°ããã®
ImageViewController
ã®
imageURL
ã®ç¥èã䜿çšããŠãåçã®ãªã¹ãå
ã®å¯Ÿå¿ããè¡ãæ§æã§ããŸãã
AppDelegate.swift
ã¹ããŒãªãŒããŒããã
詳现ã埩å
ããçµæã®åçã§Mdelãæ§æããŸãã
AppDelegate.swift
ãã®çµæãiPhone 6以éã®ããŒãã¬ãŒãã¢ãŒãããã©ã³ãã¹ã±ãŒãã¢ãŒããžã®ç§»è¡ãªã©ãiPhoneã®ç¶æ³ã¯å埩ããŸãã

ãResentsãã¿ãããããããæè¿ã®ãåçã«ã€ããŠå°ã話ããŸãããã ãã®
ãã¥ãŒã³ã³ãããŒã« rã¯ããŠãŒã¶ãŒã¯ã©ã¹
ResentsTVC
ã«ãã£ãŠæäŸãããŸã
ResentsTVC

ResentsTVC
ã¯ã©ã¹ã¯
ResentsTVC
ã¯ã©ã¹ãç¶æ¿ãããã®å¯äžã®æ©èœã¯
NSUserDefaults
ããåçã®ãªã¹ããèªã¿åãããšã§ãã
ResentsTVC.swift
ã³ãŒãã¯2è¡ã ãã§å®äºããŸããã以äžã«ããªãããã»ã©åçŽãªã®ãã瀺ããŸãã
NSUserDefaults
çžäºäœçš
NSUserDefaults
ãç¹å¥ãª
ResentsDefault
ã¯ã©ã¹ãšèšç®ããã
var resentsPhotos
ããããã£ã䜿çšããŠç·šæãããŸãã
ResentsDefault.swift
ããã¯ã
String
åã®ããŒãš
String
åã®å€ãæã€èŸæžã®é
åã§ãã ããã«ããã®ããããã£ã®
{get}
NSUserDefaults
ããããŒã¿ãèªã¿åãã
{set}
NSUserDefaults
æžã蟌ã¿
NSUserDefaults
ã
NSUserDefaults
ã¯æ¬è³ªçã«ãã¢ããªã±ãŒã·ã§ã³ã®å®è¡éã§
ããããã£ãªã¹ãããŒã¿ãæ°žç¶çã«ä¿åããããã®éåžžã«å°ããªããŒã¿ããŒã¹ã§ããããšã«æ³šæããŠãã ããã
Flickr.comãµãŒããŒããåä¿¡ããåçã«é¢ããæ
å ±ãæ ŒçŽããããã®å
éšããŒã¿æ§é
NSDictionarys
ã
Photo
ã
struct
ã§ããã
NSDates
ã
NSStrings
ã
NSDates
ã
NSDictionarys
ãããã§ããªã
[Photo]
é
åãéžæããŸããã
NSUserDefaults
ä¿åã«
[Photo]
ã䜿çšããããšã¯ã§ããŸãããããã¯
ããããã£ãªã¹ãã§ã¯ãªãããã§ãã
èŸæžã®é
å
[[String : String]]
ã䜿çšããŠã
ããããã£ãªã¹ãããŒã¿ã§ãã
NSUserDefaults
ã«Flickrã®åçã«é¢ããããŒã¿ãæ ŒçŽããŸããããã¡ãã
Photo
ã
[[String : String]]
ã«å€æããå¿
èŠããããŸãã
DataModel.swift
NSUserDefaults
ãšã®çžäºäœçšã
ResentsDefault
ã¯ã©ã¹ã«ã¯ã
ãããªãã¯APIãšããŠ2ã€ã®ããããã£ããã
ãŸã ã
var addedPhoto = Photo?
NSUserDefaults
ã«è¿œå ããåçã
var resentsPhotos: [[String : String]]
-
NSUserDefaults
ä¿åãããŠããåçã«é¢ããæ
å ±ãå«ãèŸæžã®é
åïŒ
ResentsDefault.swift
NSUserDefaults
ã¹ãã¬ãŒãžã§ã®äœæ¥ã¯ã
addedPhoto
ãæ¢åã®ã¹ãã¬ãŒãžã«è¿œå ãããšããäºå®ããå§ãŸããŸããããã¯ã1è¡ã®ã³ãŒããš
resentsPhotos
ãã«ããŒé¢æ°ã§è¡ãããŸãããã®é¢æ°ã¯ã
NSUserDefaults
ã§
NSUserDefaults
ã«ä¿åãããåç
resentsPhotos
åçã®
resentsPhotos
é
åãè¿œå ã
NSUserDefaults
ïŒ
addPhoto (photo, inDefaultsPhotos: resentsPhotos)
resentsPhotos
ãè£å©é¢æ°ã®å
¥åãã©ã¡ãŒã¿ãŒãšããŠäœ¿çšãããšããã®èšç®ãããããããã£ã«å¯ŸããŠ
{get}
ããªã¬ãŒããã
resentsPhotos
NSUserDefaults
ã¹ãã¬ãŒãžããããŒã¿ãèªã¿åãããŸãã 次ã«ã
resentsPhotos
é
åã®æåã«ãæ°ããåç
photo
ãæããæè¿ããšããŠè¿œå ããŸãã
ResentsDefault.swift
çµæã®é
åã¯
resentsPhotos
åã³å²ãåœãŠãã
resentsPhotos
ïŒ
resentsPhotos = addPhoto (photo, inDefaultsPhotos: resentsPhotos)
ãã€ãŸã
{set}
ãããã«å¯ŸããŠæ©èœããããšãæå³ããèšç®ãããããããã£ãšæŽæ°ãããé
åã
NSUserDefaults
ãªããžããªã«æžã蟌ãŸããŸãã
NSUserDefaults
ã¡ã«ããºã
NSUserDefaults
éåžžã«å°éã®ããŒã¿ãä¿åããããã«èšèšãããŠããããã
ResentPhotoAmount
å®æ°ã§æå®ãããåçã®æ°ïŒãã®å Žåã¯20ïŒã®ã¿ã«å¶éããŸãã
NSUserDefaults
ã¹ãã¬ãŒãžã§åçæ
å ±ãèšé²ããã®ã«æé©ãª
å Žæã«ã€ããŠèããŠã¿ãŸãããã ãŠãŒã¶ãŒãåçãéžæããå Žåããã®æ
å ±ã
NSUserDefaults
ã«å
¥ããå¿
èŠããããŸããããã¯
prepareForSegue
ã¯ã©ã¹ã®
prepareForSegue
ã¡ãœããã§è¡ãã®ãæå
prepareForSegue
ãããã®ã¯ã©ã¹ã¯ããäžè¬åãããŸãŸã«ããŸãïŒä»ã®ç®çã§å¿
èŠã«ãªãå ŽåããããŸãïŒã ãããã£ãŠã
PhotosSavedNSUserDefaults
ã¯ã©ã¹ã®
ãµãã¯ã©ã¹ã§ããæ°ãã
PhotosSavedNSUserDefaults
ã¯ã©ã¹ã®
NSUserDefaults
ã«åçæ
å ±ãèšé²ããããšã«é¢é£ããæ°ããæ©èœãæçš¿ããŸãã
PhotosSavedNSUserDefaults.swift
ã¹ããŒãªãŒããŒãäžã®
Flickråçç»é¢ãã©ã°ã¡ã³ãã®ã«ã¹ã¿ã ãšããŠãæ°ãã
PhotosSavedNSUserDefaults
ã¯ã©ã¹ãæ£ç¢ºã«èšå®ããå¿
èŠããããŸãã

ãããã
ResentsTVC
ã¯ã©ã¹ã«æ»ãããæè¿ã®ãåçãš
Resentsç»é¢ã®æçã
æäŸããŸãã ãã®ã¿ã¹ã¯ã¯ã
NSUserDefaults
ãããæè¿ã®ãåçã«é¢ããæ
å ±ãå埩ããããšã§ããããã®ããã«1è¡ã®ã³ãŒãã䜿çšããŸããã
ResentsTVC.swift
ãã®è¡ãã
JustPostedFlickrPhotosTVC
ãããç¶æ¿ããå¥ã®
JustPostedFlickrPhotosTVC
ã¯ã©ã¹ã®åãè¡ãšæ¯èŒãããšïŒ
JustPostedFlickrPhotosTVC.swift
次ã«ãåã
.flatMap(Photo.init)
ã³ã³ã¹ãã©ã¯ãã衚瀺ãããŸãã æåã®ã±ãŒã¹ã§ã¯
NSUserDefaults
ããå埩ãããšãã«
[String : String]
å
¥åããã2çªç®ã®ã±ãŒã¹ã§ã¯
FlickrãµãŒããŒããããŒã¿ãèªã¿åããšãã«
[String : AnyObject]
ãŸãã ã³ã³ãã€ã©ãŒã¯ãå®è¡ãã
Photo
ã€ãã·ã£ã©ã€ã¶ãŒãã©ã®ããã«ç¥ãã®ã§ããïŒ çµå±ã®ãšããããããã®2ã€ããããŸããïŒ
DataModel.swift
Swiftã§ã¯ã
struct
æ§é äœã¯ãå
¥åãã©ã¡ãŒã¿ãŒãç°ãªãå Žåã®ã¿ãè€æ°ã®åæååãæã€ããšãã§ããŸãã ç§ãã¡ã®å Žåããã®ãã¡ã®2ã€ããããŸãã
init?(json:[String:AnyObject])
ãFlickrãµãŒããŒããã®JSONããŒã¿ããstruct Photo
ãåæåããã«ã¯ãinit(userDefaults:[String:String])
ã NSUserDefaults
ãªããžããªãŒããstruct Photo
ãåæåããŸãã
ããã§ã¯ãå
¥åãã©ã¡ãŒã¿ãŒã®ã¿ã€ãã«å¿ããŠãã¿ã€ãã®æšè«ãšé¢æ°ã®ãªãŒããŒããŒãã®ã¡ã«ããºã ãæ©èœããŸãã ãããã£ãŠã
struct Photo
æ£ããåæåå
struct Photo
åŒã³åºãããŸãã
çµè«ïŒ
Table Bar Controllerã
MasterãšããŠ
Split View Controllerã®é©å¿åäœãä¿èšŒããã«ã¯ã
showDetailViewController
ããªã²ãŒãã®
separateSecondaryViewControllerFromPrimaryViewController
showDetailViewController
ããã³
showDetailViewController
ã¡ãœããã䜿çšããå¿
èŠããããŸãã
ã³ãŒãã¯
Github -
AdaptiveSplitViewController3Swiftã¢ããªã±ãŒã·ã§ã³ã«ãããŸãã
4.ã¬ã¹ãã³ã·ãããããªãŒããŒ
以åã¯ã
Popoverã¯iPadã§ãã衚瀺ã§ããŸããã§ããããiOS 8以éã§ã¯ããããããé©å¿ãããŒãžã§ã³ã®ããŒãã¬ãŒãã¢ãŒããšã©ã³ãã¹ã±ãŒãã¢ãŒãã®äž¡æ¹ã§iPhoneã«ã衚瀺ãããŸãïŒè©³çŽ°ã¯åŸè¿°ïŒã
Popoverã®æŠå¿µã¯å€ãããŸãã
UIViewController
å
ã«è¡šç€ºãããã³ã³ãã³ããšããŠ
View Controllerãå¿
èŠã§ããã
Popoverèªäœã¯
UIViewController
ã¯ãããŸããã ããã¯ããããã
Popover Presentation Controllerã¡ã«ããºã ã䜿çšããŠç»é¢ã«è¡šç€ºãããŸãã
å®éšçšã¢ããªã±ãŒã·ã§ã³ãåŒãç¶ã䜿çšããã¹ããŒãªãŒããŒãã«å¥ã®ç»é¢ãã©ã°ã¡ã³ããè¿œå ããŸããããã«ãããéžæããåçã®ç»åã®
URLã Popoverã® ããŠã£ã³ããŠãã«è¡šç€ºãããŸãã ãããè¡ãã«ã¯ã
AdaptiveSplitViewController2Swiftã¢ããªã±ãŒã·ã§ã³ïŒå€æ°ã®
Table View Controllerã
ãã¹ã¿ãŒãšãã ïŒã«åºã¥ããŠãæ°ãã
AdaptiveSplitViewController4Swiftã¢ããªã±ãŒã·ã§ã³ãäœæããå·ŠåŽã®ãURLããã¿ã³ã
Image View Controllerç»é¢ãã©ã°ã¡ã³ãïŒåçã®ç»åã衚瀺ïŒã®ããã²ãŒã·ã§ã³ããŒã«è¿œå ã
ãã¿ã€ã
ãPopoverãšããŠè¡šç€ºããŸãã ããã§ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã¯æ¬¡ã®ããã«ãªããŸããã
Popoverã«é¢ããŠã¯ã
MVCèªäœã§ã¯ãããŸãããã
PopoverãšããŠPresentã¿ã€ãã®
ã»ã°ãšã䜿çšããŠã
衚瀺ãã
View Controllerã®å€èŠ³ãããªã¬ãŒããããšã¯èå³æ·±ãã§ãã
Present as Popoverã¿ã€ãã®
ã»ã°ãšãäœæããã«
㯠ãéåžžã©ããã
CTRLã
View Controllerã«ãã©ãã°ããŸãããŸãã
prepareForSegue
ã¡ãœãããå®è¡ããããšãã§ããŸãã
ã¿ã€ã
Presents of Popoverã® ã»ã°ãšãã€ã³ã¹ããŒã«ãããã

ããŠã£ã³ããŠãã®ãµã€ãºãã€ãŸãããã
ãã¥ãŒã®ãµã€ãºã調æŽããããšãå¯èœã«ãªã
ãŸã ã
ã»ã°ãšã®èå¥åãShow URLããèšå®ãã
ImageViewController
prepareForSegue
ã¡ãœãããè¿œå ã
ImageViewController
ã
ImageViewController.swift
Popoverã® ã»ã°ãšãæºåãããšãã¯ãããã€ãã®è¿œå æ©èœã«æ³šæããå¿
èŠããããŸãã ãã®1ã€ã¯ã
prepareForSegue
å
ã§
UIPopoverPresentationController
ãšåŒã°ãããã®ãååŸãã
Popoverãã¬ãŒã³ããŒã·ã§ã³ãæ§æã§ããããšã§ãã ããšãã°ã
Popoverãäœãã®å·ŠåŽ
ã« ããããã¢ããããããããªããã
Popoverãåžžã«äœãã®å³åŽ
ã« ããããã¢ããããããããšèšãããšãã§ããŸãã ãã¹ãŠã管çã§ããŸãã ããã«ã
prepareForSegue
ã¡ãœããã§ãèªåãããªã²ãŒããšããŠå®çŸ©ã§ããŸãã
ImageViewController.swift
次ã«ã
UIPopoverPresentationControllerDelegate
ãããã³ã«ã確èªããŸãã
ImageViewController.swift
ãããŠã
UIPopoverPresentationControllerDelegate
.None
è¿ããã
UIPopoverPresentationControllerDelegate
ããªã²ãŒãã¡ãœãããå®è£
ããããšã«ãããé©å¿åäœãããªããã«ããŸãã
UIPopoverPresentationControllerDelegate
ãiPhoneã§
Popoveré©å¿ããæåŠãããŸãã
ImageViewController.swift
ãããŠã
Popoverã iPhoneã®å°ããªããŠã£ã³ããŠã
ãšããŠè¡šç€ºããã®ã«å¿
èŠãªããšã¯ããã ãã§ãã éåžžããã®æ¹æ³ã¯ããã°ã«ãããŸãã
ããããå®éšã¢ããªã±ãŒã·ã§ã³ã§ã¯ããããå°ãç°ãªãæ¹æ³ã§å®è£
ããŸã
ImageViewController
ã¯ã©ã¹ã¯ãåçç»å
URLã®è¡šç€ºæ¹æ³ã«äŸåãããåçç»å
URLã衚瀺ãã
TextView
ãå«ãç»é¢ãã©ã°ã¡ã³ãèªäœã¯èªå調æŽãããšããèãæ¹ã«æºæ ããŠããŸãã
ãã®2çªç®ã®æ¹æ³ãèŠãŠã¿ãŸãããã
åçç»åã®
URLã®è¡šç€ºã¯ãã«ã¹ã¿ã ã¯ã©ã¹
URLViewController
ã«ãã£ãŠæäŸãã
ãŸã ã
URLViewController
ã¯ã©ã¹ã®ã¢ãã«ã¯ããããã£ã§ã
var url : NSURL?
ãã©ã€ããµã€ã¯ã«ã
viewDidLoad
ã¡ãœãããšåæ§ã«ãã€ã³ã¹ããŒã«ããããšããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã¯
updateUI()
ã¡ãœããã䜿çšããŠæŽæ°ãããŸãã ãã®ã¯ã©ã¹ã§
Popoveræ§æå
šäœãçŽæ¥å®è¡ããããã
URLViewController
ã¯ã©ã¹ã¯
UIPopoverPresentationControllerDelegate
ãããã³ã«ã確èªããŸãã

ä»ã®èª°ãããå
ã«åŒã³åºããã
awakeFromNib
â lifecycleâ
awakeFromNib
ã§ã¯ããã¬ãŒã³ããŒã·ã§ã³ã¹ã¿ã€ã«ã
.Popover
èšå®ãã
UIPopoverPresentationControllerDelegate
ãããã³ã«ã®ããªã²ãŒããšããŠèªåèªèº«ãæå®ããŸãã
URLViewController.swift
UIPopoverPresentationControllerDelegate
ã䜿çšããŠã
PopoverãiPhoneã§ã©ã®ããã«é©å¿ãããã«åœ±é¿ãäžããããšãã§ããŸãã iPadã®
ããããªãŒããŒã¯ãåŸæ¥ã®æ¹æ³ã§ããããã¢ãããããŸã-å°ããªãŠã£ã³ããŠã®åœ¢ã iPhoneã§ã¯ã
Popoverã¯å°ããªãŠã£ã³ããŠã§ã¯ãªãããã«ã¹ã¯ãªãŒã³ã®ã¢ãŒãã«ãŠã£ã³ããŠã«é©å¿ããŸãã iPhoneã®å°ããªãã®ã®ããã«ããããã¢ãããããŸããã ãªãã§ïŒ iPhoneã®ç»é¢ã¯ãã£ãšå°ãããããããã¢ããããæ¬åœã«å€§ããå Žåãç»é¢ãµã€ãºã«åãããæ¹æ³ããªããããããŸããã ããããç»é¢å
šäœã§ã¢ãŒãã«ãæ³åãããšãç»é¢ã®ãµã€ãºãšæ£ç¢ºã«äžèŽããŸãã
Split View Controllerãš
Navigation Controllerãèªåçã«é©å¿ããããã«ãiOSã¯ãã®é©å¿ãèªåçã«è¡ããŸãã ãããã
UIPopoverPresentationControllerDelegate
ããªã²ãŒãã䜿çšãããšããã®é©å¿ã«åãçµãããšãã§ããŸãããããç§ãã¡ã®ããããšã§ãã
iOS 9ã§ã¯ã
Popoverããã¬ãŒã³ããŒã·ã§ã³ãäœæããããšãããšã
PopoverãiPhoneã«ãé©å¿ããããæ¹æ³ãå°ããããŸãã ããã©ã«ãã§ã¯ãããã¯ãã«ã¹ã¯ãªãŒã³ã®ã¢ãŒãã«ãã¥ãŒïŒ
.FullScreen
returnïŒã§ããã
UIModalPresentationStyle.None
ã䜿çšããããšèšãããšãã§ããŸããããã¯ãèªåé©å¿ããªãããšãæå³ããŸãã ã€ãŸããiPhoneã§ã®ãã¬ãŒã³ããŒã·ã§ã³ã¯iPadã§ã®ãã¬ãŒã³ããŒã·ã§ã³ãšãŸã£ããåãã«ãªããŸãã å°ããª
Popoverã«ãšã£ãŠ
ãããã¯éåžžã«çã«ããªã£ãŠããŸãã
UIPopoverPresentationControllerDelegate
ãè¿ã
UIModalPresentationStyle.None
ããªã²ãŒã
UIPopoverPresentationControllerDelegate
å®è£
ããããšã«ããããé©å¿ãåäœãããªããã«ããããšãã§ã
UIModalPresentationStyle.None
ã
URLViewController.swift
Popoverã®æåŸã®éåžžã«éèŠãªããšã¯ããããã¢ãããŠã£ã³ããŠã®ãµã€ãºã§ãã
MVCã«ãŽã£ããåããµã€ãºã®ããããã¢ããããŠã£ã³ããŠã衚瀺ãããããæ¬åœã«æ°ã«å
¥ã£ãŠããŸãã
MVCã®ãµã€ãºã¯ç°ãªãå¯èœæ§ãããããã§ãã ãããã«ãããããªãã¯æ¬åœã«ãã®ãµã€ãºãå¶åŸ¡ããããšæããŸãã ãªããžã§ã¯ãæåã®äžçã§ã¯ãã·ã¹ãã ã¯
Popoverã«ãã
MVCã«ãã®
MVCã奜ããµã€ãºãå°ããŸããïŒ ã©ã®ãµã€ãºã«ãªãããã§ããïŒ ãããæ¬åœã§ããã®ã§ã
MVCèªäœã ããã©ã®ãµã€ãºãåªå
ãããããç¥ãããšãã§ããŸãã ãããã
Popoverã«ã¯ããã€ãã®å¶éããããããããã¯æšå¥šäºé
ã«ãããŸããã ããšãã°ã
ããããªãŒããŒã¯ç¹å®ã®å Žæã§ã®ã¿ç»é¢ã«è¡šç€ºã§ããŸããç»é¢ã¯ååã«å€§ãããªããã°ãªãããç¢å°ã«ã¯ç¹å®ã®æ¹åãæå®ã§ããŸãã
Popoverã«ã¯ãã®çš®ã®å¶é
ãå€ããããŸãã
ãããã圌ã¯ãŸã
MVCã«å°ããŸãã
UIViewController
ã¯ç¹å¥ãªããããã£ããããŸãïŒ
var preferredContentSize: CGSize
ãã®ããããã£ããªãŒããŒã©ã€ãããŠãé©åãªãµã€ãºãè¿ãããšãã§ããŸãã åžæã®ãµã€ãºãåžžã«åãå Žåã¯ãåçŽã«èšå®ã§ããŸãã å
容ã«åºã¥ããŠåªå
ãµã€ãºãèšç®ããå¿
èŠãããå Žåã¯ã次ã®ããã«å®è¡ã§ããŸãã
URLViewController.swift
ãã®çµæã
ã³ã³ãã¯ãå¹
ããã€ã¹ã§ã
éåžž å¹
ããã€ã¹ãšåãå°ããªããŠã£ã³ããŠãã衚瀺ãããŸãã

iPadã§ããŒãã¬ãŒãã¢ãŒãã§åäœãã
Popoverã«ã¯1ã€ã®åé¡ããããŸãã iPadã§ããŒãã¬ãŒãã¢ãŒãã§ç¹å®ã®åçã®
URLã衚瀺ããå Žåãããã²ãŒã·ã§ã³ããã«ã®å·ŠåŽã«ãã
Flickr Photographersãã¯ãªãã¯ããŠãå¥ã®åç家ãšå¥ã®åçãéžæããŸã...åã®
URLãç»é¢ã«æ®ã£ãŠããããšãããã
ãŸããã
Popoverã®å€åŽãã¯ãªãã¯ãããšã
Popoverã¯çµäºããŸãã

ç»åã¯ãã§ã«å€æŽãããŠããã
Popoverã®å€åŽã®ç»åèªäœãã¯ãªãã¯ãããŸã§
URLã¯å€ããŸãŸã§ãã
çãã¯ããURLããã¿ã³ãããåãããã«ãã¯ãªãã¯ãããšãããã«ãããã¹ãŠã®ãã®ãšããåãããããšãã§ããŸããã€ãŸãããã¿ã³ãã¯ãªãã¯ãããš
ããããªãŒããŒã¯æ¶ããŸããã ç¹ã«ã
Flickr Photographersã®æ»ããã¿ã³ãã¯ãªãã¯ãããšã ãã®ç¶æ³ã¯
passthroughViews
é¢é£ããŠã
passthroughViews
ã ããã²ãŒã·ã§ã³ããŒå
šäœã
passthroughViews
äžéšã§ãããæ¬åœã«æªãããšã¯ããªã¹ãå
ã®å¥ã®åçãã¯ãªãã¯ãããšãåçã®åçãæŽæ°ãã
ãŸãã ã
URLã®ãã Popoverã¯æŽæ°ãããªãããšã§ãã ç»é¢ã«ã¯åŒãç¶ãå€ãåçã®
URLãå«ãŸã
ãŸã ã ããã¯æ¬åœã«ã²ã©ãã§ãã
ã³ãŒãã§ãã®åé¡ã次ã®ããã«è§£æ±ºããŸãã 誰ããæ°ãã
image
ã€ã³ã¹ããŒã«ãããã³ã«ãç§ã¯æã£ãŠãã
ããããªãŒããŒããã¹ãŠ
æ¶ããŸãã
ImageViewController.swift
ä»ãç¶æ³ã¯æ¹åãããŸãã
ãããã« ã³ã³ãã¯ãå¹
ããã€ã¹ã§ãå°ããªãŠã£ã³ããŠããšããŠ
Popoverã衚瀺ããã«ã¯ããã«ã¹ã¯ãªãŒã³ã¢ãŒãã«ãŠã£ã³ããŠã®åœ¢åŒã§ã®
ã³ã³ãã¯ãå¹
ããã€ã¹çšã®
Popoverã®é©å¿åèªå衚瀺ããã£ã³ã»ã«ããå¿
èŠããããŸãã ããã¯ã
adaptivePresentationStyleForPresentationController
ã¡ãœããã䜿çšããŠå®è¡ã§ããŸãã
UIPopoverPresentationControllerDelegate
å§ä»»ããŸãã
UIModalPresentationStyle.None
ãå€
UIModalPresentationStyle.None
ãè¿ããŸãã
ã³ãŒãã¯
Github -
AdaptiveSplitViewController4Swiftã¢ããªã±ãŒã·ã§ã³ã«ãããŸãã