UIPageViewController in Swift - ios

Hi am following a tutorial on UIPageViewController to generate a gallery of pictures in my project http://www.theappguruz.com/blog/easy-steps-to-implement-uipageviewcontroller-in-swift even download the demo and it works but in my if I get an error and the application falls.
fatal error: unexpectedly found nil while unwrapping an Optional value
at next my code.
PageContentViewController.swift:
import UIKit
class PageContentViewController: UIPageViewController {
#IBOutlet weak var lblTitle: UILabel!
#IBOutlet weak var imageView: UIImageView!
var pageIndex: Int = 0
var strTitle: String!
var strPhotoName: String!
override func viewDidLoad() {
super.viewDidLoad()
imageView.image = UIImage(named: strPhotoName)
lblTitle.text = strTitle
}
}
ViewController2.swift
import UIKit
class ViewController2: UIPageViewController, UIPageViewControllerDataSource
{
var arrPageTitle: NSArray = NSArray()
var arrPagePhoto: NSArray = NSArray()
override func viewDidLoad() {
super.viewDidLoad()
arrPageTitle = ["This is The App Guruz", "This is Table Tennis 3D", "This is Hide Secrets"];
arrPagePhoto = ["1.jpg", "2.jpg", "3.jpg"];
self.dataSource = self
self.setViewControllers([getViewControllerAtIndex(0)] as [UIViewController], direction: UIPageViewControllerNavigationDirection.Forward, animated: false, completion: nil)
}
// MARK:- UIPageViewControllerDataSource Methods
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController?
{
let pageContent: PageContentViewController = viewController as! PageContentViewController
var index = pageContent.pageIndex
if ((index == 0) || (index == NSNotFound))
{
return nil
}
index -= 1;
return getViewControllerAtIndex(index)
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController?
{
let pageContent: PageContentViewController = viewController as! PageContentViewController
var index = pageContent.pageIndex
if (index == NSNotFound)
{
return nil;
}
index += 1;
if (index == arrPageTitle.count)
{
return nil;
}
return getViewControllerAtIndex(index)
}
// MARK:- Other Methods
func getViewControllerAtIndex(index: NSInteger) -> PageContentViewController
{
// Create a new view controller and pass suitable data.
let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageContentViewController") as! PageContentViewController
pageContentViewController.strTitle = "\(arrPageTitle[index])"
pageContentViewController.strPhotoName = "\(arrPagePhoto[index])"
pageContentViewController.pageIndex = index
return pageContentViewController
}
}

I believe Joakin is right, you are forcing the unwrap of an optional value, you need to either initialize your values when you declare them or treat them as optionals and unwrap them as you need them.
Try this:
var strTitle: String?
var strPhotoName: String?
override func viewDidLoad() {
super.viewDidLoad()
if let photoName = strPhotoName {
imageView.image = UIImage(named: photoName)
}
if let title = strTitle {
lblTitle.text = title
}
}
Then, somewhere in your code you need to specify the name of the image (make sure the image exists in your project) and the name of the title. If you dont specify them, the updated lines of code will not get executed.
Read more about optional values here

var strPhotoName: String!
It is literally nil. You will need to assign it a image name.
Let's say your image is called cloudsImage.png
You would set your var strPhotoName like this in viewDidLoad if you want.
override func viewDidLoad() {
super.viewDidLoad()
strPhotoName = "cloudsImage.png"
imageView.image = UIImage(named: strPhotoName)
lblTitle.text = strTitle
}

import UIKit
class PageContentViewController: UIViewController {
#IBOutlet weak var lblTitle: UILabel!
#IBOutlet weak var imageView: UIImageView!
var pageIndex: Int = 0
var strTitle: String!
var strPhotoName: String!
override func viewDidLoad() {
super.viewDidLoad()
imageView.image = UIImage(named: strPhotoName)
lblTitle.text = strTitle
}
}
the main error was that the class of the page was wrong now the problem is solved.

Related

Problems Updating View with Swift 5

I am having some trouble updating my secondViewController view in Xcode using Swift 5. I want my app to add two numbers together and show the result in the second ViewController. Although it works the first time, if I return to my previous view and change the numbers, the view does not update.
I tried using viewWillAppear, viewWillDisappear, amongst others, including NSNotificationCenter addObserve, but I have had no luck whatsoever.
Do you have any recommendations? Am I missing something?
Please see below for the code and a screenshot of my ViewControllers:
//
// ViewController.swift
//
import UIKit
var result = ""
var resultFinal = Float(result)
let finalResult = resultFinal!
class ViewController: UIViewController {
#IBOutlet weak var firstNumber: UITextField!
#IBOutlet weak var secondNumber: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
func getResult()-> Float{
guard let fNumber = firstNumber.text else {
return 0
}
let firstFloat = Float(fNumber)
guard let sNumber = secondNumber.text else {
return 0
}
let secondFloat = Float(sNumber)
let sumNumber: Float = firstFloat! + secondFloat!
return sumNumber
}
#IBAction func submitSum(_ sender: Any) {
resultFinal = getResult()
print(resultFinal!)
}
}
//
// secondViewController.swift
//
import UIKit
class secondViewController: UIViewController {
#IBOutlet weak var test: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.test.text!=""
// Do any additional setup after loading the view.
}
override func viewWillAppear(_ animated: Bool) {
test.text = String(finalResult)
}
}
Screenshot:
Thanks.
Your problem is with the global variables. It seems from your code that you expect these three to reevaluate every time one of them changes:
var result = ""
var resultFinal = Float(result)
let finalResult = resultFinal!
For example, if you set resultFinal = 4, then finalResult will equal 4. However, those variables only evaluate once––the first time. You can simplify your use of these variables significantly. Replace these three with:
var result: Float?
Then, in ViewController:
class ViewController: UIViewController {
#IBOutlet weak var firstNumber: UITextField!
#IBOutlet weak var secondNumber: UITextField!
func getResult() -> Float {
guard let number1 = Float(firstNumber.text ?? "0") ?? 0
guard let number2 = Float(secondNumber.text ?? "0") ?? 0
return number1 + number2
}
#IBAction func submitSum(_ sender: Any) {
result = getResult()
}
}
Note: I simplified getResult and made it treat empty fields as 0.
In SecondViewController:
class SecondViewController: UIViewController {
#IBOutlet weak var test: UITextField!
override func viewWillAppear(_ animated: Bool) {
test.text = String(result ?? 0)
}
}
Note: self.test.text!="" doesn't really do anything, so I removed it.

How to change button title every time checkmark selected within custom cell

I have a viewcontroller that has a tableview and a button at the bottom. Within each cell is a radio button as a tapGesture. I would like to updated the button with the number of cells selected. If my gesture is in the custom cell and my button is in my viewcontroller how can I get the two to work together?
Custom cell:
class SearchTalentCell: UITableViewCell {
#IBOutlet weak var userProfileImage: UIImageView!
#IBOutlet weak var talentUserName: UILabel!
#IBOutlet weak var selectedImg: UIImageView!
#IBOutlet weak var inviteSentImg: UIImageView!
var prospectRef: FIRDatabaseReference!
var currentTalent: UserType!
func setTalent(talent: UserType) {
currentTalent = talent
currentTalent.userKey = talent.userKey
}
override func awakeFromNib() {
super.awakeFromNib()
let tap = UITapGestureRecognizer(target: self, action: #selector(selectTapped))
tap.numberOfTapsRequired = 1
selectedImg.addGestureRecognizer(tap)
selectedImg.isUserInteractionEnabled = true
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
func configureCell(user: UserType, img: UIImage? = nil) {
prospectRef = Cast.REF_PRE_PRODUCTION_CASTING_POSITION.child(ProjectDetailVC.currentProject).child(FIRDataCast.prospect.rawValue).child(CastingDetailVC.positionName).child(user.userKey)
setTalent(talent: user)
self.talentUserName.text = "\(user.firstName) \(user.lastName)"
prospectRef.observeSingleEvent(of: .value, with: { (snapshot) in
if let _ = snapshot.value as? NSNull {
self.inviteSentImg.isHidden = true
} else {
self.inviteSentImg.image = UIImage(named: "inviteSent")
self.inviteSentImg.isHidden = false
}
})
if UserType.selectedTalentForSearch.contains(currentTalent.userKey) {
selectedImg.image = UIImage(named: "radioSelected")
} else {
selectedImg.image = UIImage(named: "radioUnselected")
}
//Image Caching
if img != nil {
self.userProfileImage.image = img
} else {
if let imageURL = user.profileImage {
let ref = FIRStorage.storage().reference(forURL: imageURL)
ref.data(withMaxSize: 2 * 1024 * 1024, completion: { (data, error) in
if error != nil {
print("ZACK: Unable to download image from Firebase Storage")
} else {
print("ZACK: Image downloaded from Firebase Storage")
if let imgData = data {
if let img = UIImage(data: imgData) {
self.userProfileImage.image = img
SearchTalentVC.userProfileImageCache.setObject(img, forKey: imageURL as NSString)
}
}
}
})
}
}
}
#objc func selectTapped(sender: UITapGestureRecognizer) {
if UserType.selectedTalentForSearch.contains(currentTalent.userKey) {
selectedImg.image = UIImage(named: "radioUnselected")
UserType.selectedTalentForSearch = UserType.selectedTalentForSearch.filter{$0 != currentTalent.userKey}
print("Keys: \(UserType.selectedTalentForSearch)")
} else {
selectedImg.image = UIImage(named: "radioSelected")
UserType.selectedTalentForSearch.append(currentTalent.userKey)
print("Keys: \(UserType.selectedTalentForSearch)")
}
}
}
ViewController:
class SearchTalentVC: UIViewController, UITableViewDelegate, UITableViewDataSource {
#IBOutlet weak var tableView: UITableView!
#IBOutlet weak var sendInviteButton: UIButton!
var searchingRole = [Cast]()
var unfilteredTalent = [UserType]()
var filteredTalent = [UserType]()
var selectedTalent = [UserType]()
var matchingTalentUserKeys = [String]()
var isFiltered = false
var selectedCounter = [String]()
var prospectRef: FIRDatabaseReference!
static var userProfileImageCache: NSCache<NSString, UIImage> = NSCache()
let searchController = UISearchController(searchResultsController: nil)
override func viewDidLoad() {
super.viewDidLoad()
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search Talent"
searchController.searchBar.barStyle = .black
navigationItem.searchController = searchController
definesPresentationContext = true
searchController.searchBar.scopeButtonTitles = ["All", "Role Specific"]
searchController.searchBar.tintColor = UIColor.white
searchController.searchBar.delegate = self
searchController.searchResultsUpdater = self
self.sendInviteButton.setTitle("Send Invite to \(UserType.selectedTalentForSearch.count) Prospects", for: .normal)
getTalentProfiles()
}
Thank you for any help!
I'm not sure why you are using the cell selection inside the cell, as opposed to the tableview delegate function func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)?
If you use didSelectRowAt, you could have an array of selected rows and you can include the selectedRows.count into your button text.
Hope that helps!

Weird UIPageViewController sliding behavior with Aspect Fill image mode

I just created a UIPageViewController with page content view controller that consists of single ImageView and a Button. It works almost flawlessly, but it has a major issue when I try to slide through the views in vertical view only, with Aspect Fill mode set for my ImageView (which is pretty much basically setup for this).
You can see this behavior right here: https://youtu.be/2yl6UXbUGQg
I am using autolayout, Button constraints are aligned to ImageView (full size), ImageView constraints are set to Superview...
Code:
1) UIPageViewController:
class ViewController: UIPageViewController, UIPageViewControllerDataSource {
var arrPageTitle: NSArray = NSArray()
var arrPagePhoto: NSArray = NSArray()
override func viewDidLoad() {
super.viewDidLoad()
arrPageTitle = ["page 1", "page 2", "page 3"]
arrPagePhoto = ["slider-1.jpg", "slider-2.jpg", "slider-3.jpeg"]
self.dataSource = self
self.setViewControllers([getViewControllerAtIndex(0)] as [UIViewController],
direction: .Forward,
animated: false,
completion: nil)
}
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
let pageContent: PageContentViewController = viewController as! PageContentViewController
var index = pageContent.pageIndex
if ((index==0) || (index == NSNotFound)) {
return nil
}
index -= 1
return getViewControllerAtIndex(index)
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
let pageContent: PageContentViewController = viewController as! PageContentViewController
var index = pageContent.pageIndex
if index == NSNotFound {
return nil
}
index += 1
if index == arrPageTitle.count {
return nil
}
return getViewControllerAtIndex(index)
}
func getViewControllerAtIndex(index: NSInteger) -> PageContentViewController {
let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageContentViewController") as! PageContentViewController
pageContentViewController.strTitle = "\(arrPageTitle[index])"
pageContentViewController.strPhotoName = "\(arrPagePhoto[index])"
pageContentViewController.pageIndex = index
return pageContentViewController
}
}
2) Content view controller, UIViewController:
class PageContentViewController: UIViewController {
#IBOutlet weak var imageView: UIImageView!
#IBOutlet weak var labelTitle: UIButton!
var pageIndex: Int = 0
var strTitle: String!
var strPhotoName: String!
override func viewDidLoad() {
super.viewDidLoad()
self.imageView.image = UIImage(named: self.strPhotoName)
self.labelTitle.setTitle(self.strTitle, forState: .Normal)
}
}
Your image views from one view controller are spilling over to other view controllers because you need to set clipsToBounds to true on your image views. This will prevent the contents of the image view from going beyond the image view's bounds.
Check Clip Subviews to prevent image view size stretched.

UIPageViewController with button on each page, which presents a detailed view controller

I have set up a collection view that presents different view controllers on cell click in a container below the collection view. These different view controllers are consisted of page views that present different number of products from the same category which is selected in the collection view.
I want to add a button to the pages such that every page should present detailed information about that product (ex. popping in another view controller) on touch up inside. I can't come up with anything by now and I'll be really grateful if somebody shows me how to do that.
Thanks in advance.
This is the collection view, which cells are presented in the container.
This is the view controller that is presented in the container.
Here is the code for my first product page view:
var pageViewController: UIPageViewController!
var pageTitles:NSArray!
var pageImages:NSArray!
var productTitle:NSArray!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.pageTitles = NSArray(objects: "За още по-ефективна подкрепа на вените.", "Живей с лекота без разширени вени.", "За ефективна подкрепа на вените.", "Единствените в България кърпички против хемороиди.")
self.pageImages = NSArray(objects: "RuvenorForte.jpg", "RuvenorGel.jpg", "RuvenorKapsuli.jpg", "RuvenorKurpi.jpg", "ProbienFemiFlora.jpg")
self.productTitle = NSArray(objects: "Рувенор Форте", "Рувенор гел", "Рувенор капсули","Рувенор кърпи")
self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as! UIPageViewController
self.pageViewController.dataSource = self
let startVC = self.viewControllerAtIndex(0) as ContentViewController
let viewControllers = NSArray(object: startVC)
self.pageViewController.setViewControllers(viewControllers as? [UIViewController], direction: .Forward, animated: true, completion: nil)
//self.pageViewController.view.frame = CGRectMake(0, 62, self.view.frame.width, self.view.frame.size.height - 60)
let height = UIScreen.mainScreen().bounds.size.height
if height == 568 {
self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.size.height - 66) }
else if height == 667{
self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.size.height - 66)
}
else {
self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.size.height - 230) }
self.addChildViewController(self.pageViewController)
self.view.addSubview(self.pageViewController.view)
self.pageViewController.didMoveToParentViewController(self)
}
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent }
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func viewControllerAtIndex(index: Int) -> ContentViewController
{
if ((self.pageTitles.count == 0) || (index >= self.pageTitles.count)) {
return ContentViewController()
}
let vc: ContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ContentViewController") as! ContentViewController
vc.imageFile = self.pageImages[index] as! String
vc.titleText = self.pageTitles[index] as! String
vc.product = self.productTitle[index] as! String
vc.pageIndex = index
return vc
}
// MARK: - Page View Controller Data Source
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController?
{
let vc = viewController as! ContentViewController
var index = vc.pageIndex as Int
if (index == 0 || index == NSNotFound)
{
return nil
}
index--
return self.viewControllerAtIndex(index)
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
let vc = viewController as! ContentViewController
var index = vc.pageIndex as Int
if (index == NSNotFound)
{
return nil
}
index++
if (index == self.pageTitles.count)
{
return nil
}
return self.viewControllerAtIndex(index)
}
func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int
{
return self.pageTitles.count
}
func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int
{
return 0
}}
And this is the code from the view controller to whom I pass all the information:
class ContentViewController: UIViewController {
#IBOutlet weak var imageView: UIImageView!
#IBOutlet weak var titleLabel: UILabel!
#IBOutlet var lightPurpleView: UIView!
#IBOutlet var productTitle: UILabel!
#IBOutlet var infoLabel: UILabel!
#IBOutlet var scrollView: UIScrollView!
#IBOutlet var infoTextField: UITextView!
#IBOutlet var infoTextField1: UITextView!
#IBOutlet var infoTextField2: UITextView!
var pageIndex: Int!
var titleText: String!
var imageFile: String!
var infoButton: UIButton!
var product: String!
var listovka: String!
var listovka1: String!
var listovka2: String!
override func viewDidLoad()
{
super.viewDidLoad()
let upSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:"))
upSwipe.direction = .Up
view.addGestureRecognizer(upSwipe)
imageView.addGestureRecognizer(upSwipe)
self.imageView.image = UIImage(named: self.imageFile)
self.titleLabel.text = self.titleText
self.infoTextField.text = self.listovka
self.infoTextField1.text = self.listovka1
self.infoTextField2.text = self.listovka2
self.productTitle.text = self.product
self.lightPurpleView.layer.cornerRadius = 10
imageView.layer.cornerRadius = 10
imageView.clipsToBounds = true
self.infoLabel.text = "Листовка"
scrollView.contentSize.height = 3375
scrollView.layer.cornerRadius = 10
self.infoTextField.layer.cornerRadius = 10
self.infoTextField.clipsToBounds = true
self.infoTextField1.layer.cornerRadius = 10
self.infoTextField1.clipsToBounds = true
self.infoTextField2.layer.cornerRadius = 10
self.infoTextField2.clipsToBounds = true
self.scrollView.showsVerticalScrollIndicator = false
lightPurpleView.layer.shadowColor = UIColor.darkGrayColor().CGColor
lightPurpleView.layer.shadowOffset = CGSize(width: 2.0, height: 2.0)
lightPurpleView.layer.shadowOpacity = 1.0
lightPurpleView.layer.shadowRadius = 2
lightPurpleView.layer.masksToBounds = true
lightPurpleView.clipsToBounds = false
imageView.layer.shadowColor = UIColor.darkGrayColor().CGColor
imageView.layer.shadowOffset = CGSize(width: 2.0, height: 2.0)
imageView.layer.shadowOpacity = 1.0
imageView.layer.shadowRadius = 2
imageView.layer.masksToBounds = true
imageView.clipsToBounds = false
}}
So basically I want to add this button, which is on the second picture and instead of scrolling down to see the textViews, just to present them in another view controller (dependent on the indexPath of the page view for that product category) that pops up.

Troubles With UIPageViewController in Swift

I've been having a terribly hard time trying to create a Tutorial flow for my app using swift...Here's what I want to do:
User comes to start screen which has button to allow them to "take the tour" This is Storyboarded and works fine.
User presses button, and tutorial appears from push segue.
After tutorial user can go on to perform other functions.
I first tried to create the UIPageViewController by simply dragging it into the storyboard and attaching a class. That didn't work. So I found a tutorial that I used to create this:
import UIKit
class TutorialViewController: UIViewController, UIPageViewControllerDataSource {
var pageController: UIPageViewController?
let pageAssets:[String] = ["blender.png", "click.png", "share.png"]
var currentIndex: Int = 0
// MARK: - View Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
pageController = UIPageViewController(transitionStyle: .Scroll, navigationOrientation: .Horizontal, options: nil)
pageController!.view.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height);
pageController!.dataSource = self
var initialViewController: PageContentViewController = self.viewControllerAtIndex(0)
let viewControllers: NSArray = [initialViewController]
pageController!.setViewControllers(viewControllers, direction: .Forward, animated: true, completion: nil)
addChildViewController(self.pageController!)
self.view.addSubview(pageController!.view)
pageController!.didMoveToParentViewController(self)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - DataSource protocol conformance
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
var idx: Int = (viewController as PageContentViewController).itemIndex
if (idx == 0) {
return nil
}
idx--
return self.viewControllerAtIndex(idx)
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
var idx = (viewController as PageContentViewController).itemIndex
if (idx > pageAssets.count){
return nil
}
idx++
return self.viewControllerAtIndex(idx)
}
func viewControllerAtIndex(index:Int) -> PageContentViewController {
let childViewController:PageContentViewController = PageContentViewController()
childViewController.itemIndex = index
childViewController.imageName = pageAssets[index]
currentIndex = index
return childViewController
}
// MARK: - Navigation
func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
return pageAssets.count
}
func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
return 0
}
/*
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
} */
}
And here is the PageContentViewController:
import UIKit
class PageContentViewController: UIViewController {
#IBOutlet weak var testLabel: UILabel!
#IBOutlet weak var tutorialImageView: UIImageView!
// MARK: - Variables
#IBOutlet weak var contentImageView: UIImageView!
var itemIndex: Int = 0
//computed member which calls didSet that actually creates the UIImage that's displayed
var imageName: String = ""{
didSet {
if let imageView = contentImageView {
tutorialImageView.image = UIImage(named: imageName)
}
}
}
// MARK: - View Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
contentImageView?.image = UIImage(named: imageName)
}
}
So first, how do I get to this Class using a Segue, OR from my AppDelegate?
I know...long question, but I'm really outdone by trying to create a PageView intro. Any and all help is appreciated...

Resources