{"id":2056,"date":"2016-11-08T11:06:09","date_gmt":"2016-11-08T05:36:09","guid":{"rendered":"https:\/\/www.innovationm.com\/blog\/?p=2056"},"modified":"2016-11-08T11:12:59","modified_gmt":"2016-11-08T05:42:59","slug":"walkthrough-implementation-in-swift-3-0","status":"publish","type":"post","link":"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/","title":{"rendered":"Walkthrough Implementation in Swift 3.0"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">A walkthrough is the process of intentionally revealing functionality to a user.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">While some people argue that a <\/span><span style=\"font-weight: 400;\">user should be able to figure out how an app works just by looking at it<\/span><span style=\"font-weight: 400;\">, walkthroughs are becoming an increasingly popular user experience strategy as apps become more complex. <\/span><span style=\"font-weight: 400;\">We show the inside screens of the App in Walkthrough.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We can design walkthrough with ScrollView, CollectionView, UIPageViewController etc.\u00a0<\/span><b>We found that UIPageViewController is best for this, so we implemented it with UIPageViewController.<\/b><\/p>\n<p>Let<b> WalkthroughVC<\/b><span style=\"font-weight: 400;\"> is the view controller that holds the design of walkthrough, and <\/span><b>HomeVC<\/b><span style=\"font-weight: 400;\"> is the view controller in which we will show walkthrough.<\/span><br \/>\n<span style=\"font-weight: 400;\">We can customize <\/span><b>WalkthroughVC <\/b><span style=\"font-weight: 400;\">\u00a0as per requirement.<\/span><\/p>\n<p><b>These are the steps to implement walkthrough in Swift 3.0:<\/b><\/p>\n<ol>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">HomeVC must conform the protocol UIPageViewControllerDataSource and UIPageViewControllerDelegate<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Create and instantiate UIPageViewController instance &#8211;\u00a0<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0private func initializeWalkThrough() {<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/transition style can be pageCurl and scroll<\/span><br \/>\n<span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 let pageController = UIPageViewController.init(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil)<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 pageController.delegate = self<\/span><br \/>\n<span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 pageController.dataSource = self<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 var frame:CGRect = self.view.bounds<\/span><br \/>\n<span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 frame.size.height = UIScreen.main.bounds.size.height &#8211; 100 \/\/ WalkThrough will cover this height\u201d<\/span><br \/>\n<span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 \u00a0pageController.view.frame = frame<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 let walkThroughVC:WalkThroughVC = self.viewControllerAtIndex(index: 0)<\/span><br \/>\n<span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 let viewControllers:[WalkThroughVC] = [walkThroughVC]<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 pageController.setViewControllers(viewControllers, direction: .forward, animated: false, completion: nil)<\/span><br \/>\n<span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 self.addChildViewController(pageController)<\/span><br \/>\n<span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 self.view.addSubview(pageController.view)<\/span><br \/>\n<span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 self.pageControl.numberOfPages = walkThroughVC.pageArray.count<\/span><br \/>\n<span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 self.view .bringSubview(toFront: self.pageControl)<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0}<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0private func viewControllerAtIndex(index:Int) -&gt; WalkThroughVC {<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0let childVC = storyboard?.instantiateViewController(withIdentifier: WalkThrough_Identifier) as! WalkThroughVC<\/span><br \/>\n<span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 childVC.pageIndex = index<\/span><br \/>\n<span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 return childVC<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0}<\/span><\/p>\n<p>3. Define DataSource methods of UIPageViewController<\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -&gt; UIViewController? {<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0let walkThroughVC = viewController as? WalkThroughVC<\/span><\/p>\n<p><span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var index = walkThroughVC?.pageIndex<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if index == 0 {<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return nil<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0index = index! &#8211; 1<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return self.viewControllerAtIndex(index: index!)<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0}<\/span><\/p>\n<p><span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -&gt; UIViewController? {<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0let walkThroughVC = viewController as? WalkThroughVC<\/span><\/p>\n<p><span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var index = walkThroughVC?.pageIndex<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0let pageCount = walkThroughVC?.pageArray.count<\/span><\/p>\n<p><span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0index = index! + 1<\/span><\/p>\n<p><span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if index == pageCount {<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return nil<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return self.viewControllerAtIndex(index: index!)<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0}<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a04. Define Delegate method of UIPageViewController to update the PageControl<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {<\/span><br \/>\nif !completed {<br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0let childVC = pageViewController.viewControllers?.last as? WalkThroughVC<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0self.pageControl.currentPage = (childVC?.pageIndex)!<\/span><br \/>\n<span style=\"font-weight: 400;\"> \u00a0\u00a0\u00a0}<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Note : You can download sample project on Walkthrough implementation in Swift 3.0 from\u00a0<\/span><a href=\"http:\/\/staging.innovationm.com\/BlogFiles\/WalkThroughDemo.zip\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A walkthrough is the process of intentionally revealing functionality to a user. While some people argue that a user should be able to figure out how an app works just by looking at it, walkthroughs are becoming an increasingly popular user experience strategy as apps become more complex. We show the inside screens of the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2253,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,71],"tags":[178,177,179],"class_list":["post-2056","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ios","category-mobile","tag-swift-3-0","tag-walkthrough","tag-walkthrough-swift-3-0"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Walkthrough Implementation in Swift 3.0 | InnovationM Blog<\/title>\n<meta name=\"description\" content=\"Step by step guide to implement walkthrough in Swift 3.0.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Walkthrough Implementation in Swift 3.0 | InnovationM Blog\" \/>\n<meta property=\"og:description\" content=\"Step by step guide to implement walkthrough in Swift 3.0.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/\" \/>\n<meta property=\"og:site_name\" content=\"InnovationM - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-11-08T05:36:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-11-08T05:42:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2016\/10\/Walkthrough-Handling-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"787\" \/>\n\t<meta property=\"og:image:height\" content=\"602\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"InnovationM Admin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"InnovationM Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/walkthrough-implementation-in-swift-3-0\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/walkthrough-implementation-in-swift-3-0\\\/\"},\"author\":{\"name\":\"InnovationM Admin\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"headline\":\"Walkthrough Implementation in Swift 3.0\",\"datePublished\":\"2016-11-08T05:36:09+00:00\",\"dateModified\":\"2016-11-08T05:42:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/walkthrough-implementation-in-swift-3-0\\\/\"},\"wordCount\":371,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/walkthrough-implementation-in-swift-3-0\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/10\\\/Walkthrough-Handling-2.png\",\"keywords\":[\"Swift 3.0\",\"Walkthrough\",\"walkthrough Swift 3.0\"],\"articleSection\":[\"iOS\",\"Mobile\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/walkthrough-implementation-in-swift-3-0\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/walkthrough-implementation-in-swift-3-0\\\/\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/walkthrough-implementation-in-swift-3-0\\\/\",\"name\":\"Walkthrough Implementation in Swift 3.0 | InnovationM Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/walkthrough-implementation-in-swift-3-0\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/walkthrough-implementation-in-swift-3-0\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/10\\\/Walkthrough-Handling-2.png\",\"datePublished\":\"2016-11-08T05:36:09+00:00\",\"dateModified\":\"2016-11-08T05:42:59+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"description\":\"Step by step guide to implement walkthrough in Swift 3.0.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/walkthrough-implementation-in-swift-3-0\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/walkthrough-implementation-in-swift-3-0\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/walkthrough-implementation-in-swift-3-0\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/10\\\/Walkthrough-Handling-2.png\",\"contentUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/10\\\/Walkthrough-Handling-2.png\",\"width\":787,\"height\":602},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/walkthrough-implementation-in-swift-3-0\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Walkthrough Implementation in Swift 3.0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\",\"name\":\"InnovationM - Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\",\"name\":\"InnovationM Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"caption\":\"InnovationM Admin\"},\"sameAs\":[\"http:\\\/\\\/www.innovationm.com\\\/\"],\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/author\\\/innovationmadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Walkthrough Implementation in Swift 3.0 | InnovationM Blog","description":"Step by step guide to implement walkthrough in Swift 3.0.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/","og_locale":"en_US","og_type":"article","og_title":"Walkthrough Implementation in Swift 3.0 | InnovationM Blog","og_description":"Step by step guide to implement walkthrough in Swift 3.0.","og_url":"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/","og_site_name":"InnovationM - Blog","article_published_time":"2016-11-08T05:36:09+00:00","article_modified_time":"2016-11-08T05:42:59+00:00","og_image":[{"width":787,"height":602,"url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2016\/10\/Walkthrough-Handling-2.png","type":"image\/png"}],"author":"InnovationM Admin","twitter_misc":{"Written by":"InnovationM Admin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/#article","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/"},"author":{"name":"InnovationM Admin","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"headline":"Walkthrough Implementation in Swift 3.0","datePublished":"2016-11-08T05:36:09+00:00","dateModified":"2016-11-08T05:42:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/"},"wordCount":371,"commentCount":0,"image":{"@id":"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2016\/10\/Walkthrough-Handling-2.png","keywords":["Swift 3.0","Walkthrough","walkthrough Swift 3.0"],"articleSection":["iOS","Mobile"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/","url":"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/","name":"Walkthrough Implementation in Swift 3.0 | InnovationM Blog","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/#primaryimage"},"image":{"@id":"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2016\/10\/Walkthrough-Handling-2.png","datePublished":"2016-11-08T05:36:09+00:00","dateModified":"2016-11-08T05:42:59+00:00","author":{"@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"description":"Step by step guide to implement walkthrough in Swift 3.0.","breadcrumb":{"@id":"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/#primaryimage","url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2016\/10\/Walkthrough-Handling-2.png","contentUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2016\/10\/Walkthrough-Handling-2.png","width":787,"height":602},{"@type":"BreadcrumbList","@id":"https:\/\/www.innovationm.com\/blog\/walkthrough-implementation-in-swift-3-0\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.innovationm.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Walkthrough Implementation in Swift 3.0"}]},{"@type":"WebSite","@id":"https:\/\/www.innovationm.com\/blog\/#website","url":"https:\/\/www.innovationm.com\/blog\/","name":"InnovationM - Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.innovationm.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed","name":"InnovationM Admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","caption":"InnovationM Admin"},"sameAs":["http:\/\/www.innovationm.com\/"],"url":"https:\/\/www.innovationm.com\/blog\/author\/innovationmadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/2056","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/comments?post=2056"}],"version-history":[{"count":0,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/2056\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media\/2253"}],"wp:attachment":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media?parent=2056"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/categories?post=2056"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/tags?post=2056"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}