0
votes

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MyApp.DetailPage saveit]: unrecognized selector sent to instance 0x13c539ed0'

I've bolded the code that is causing this errors. Any advice appreciated!

import UIKit

class DetailPage: UIViewController, UIPageViewControllerDataSource {

// MARK: - Variables
private var pageViewController: UIPageViewController?
var TableData:Array< String > = Array < String >()

var company_name: String?
var webSite: String?

var object: PFObject!

// Initialize it right away here

private let contentWeb = ["http://www.example.com/chart1.php",
    "http://www.example.com/app/chart2.php",
    "http://www.example.com/app/chart3.php",
    "http://www.example.com/chart4.php"]

// MARK: - View Lifecycle
override func viewDidLoad() {
    super.viewDidLoad()

    // Test out programically setting navigation bar
    let sendButton = UIBarButtonItem(title: "Save", style: UIBarButtonItemStyle.Plain, target: self, action: "saveit")
    self.navigationItem.rightBarButtonItem = sendButton

    createPageViewController()
    setupPageControl()

}

private func createPageViewController() {

    let pageController = self.storyboard!.instantiateViewControllerWithIdentifier("PageController") as! UIPageViewController
    pageController.dataSource = self

    if contentWeb.count > 0 {
        let firstController = getItemController(0)!
        let startingViewControllers: NSArray = [firstController]
        pageController.setViewControllers(startingViewControllers as [AnyObject], direction: UIPageViewControllerNavigationDirection.Forward, animated: false, completion: nil)
    }

    pageViewController = pageController
    addChildViewController(pageViewController!)
    self.view.addSubview(pageViewController!.view)
    pageViewController!.didMoveToParentViewController(self)
}

private func setupPageControl() {
    let appearance = UIPageControl.appearance()
    appearance.pageIndicatorTintColor = UIColor.grayColor()
    appearance.currentPageIndicatorTintColor = UIColor.whiteColor()
    appearance.backgroundColor = UIColor.darkGrayColor()
}

// MARK: - UIPageViewControllerDataSource

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {

    let itemController = viewController as! PageItemController

    if itemController.itemIndex > 0 {
        return getItemController(itemController.itemIndex-1)
    }

    return nil
}

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {

    let itemController = viewController as! PageItemController

    if itemController.itemIndex+1 < contentWeb.count {
        return getItemController(itemController.itemIndex+1)
    }

    return nil
}

private func getItemController(itemIndex: Int) -> PageItemController? {

    if itemIndex < contentWeb.count {
        let pageItemController = self.storyboard!.instantiateViewControllerWithIdentifier("ItemController") as! PageItemController
        pageItemController.itemIndex = itemIndex
        //            pageItemController.imageName = contentImages[itemIndex]
        pageItemController.webSite = TableData[itemIndex]

        return pageItemController
    }

    return nil
}

// MARK: - Page Indicator

func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
    return contentImages.count
}

func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
    return 0
}

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(true)

}

func saveit(sender: AnyObject) {

    self.object["username"] = PFUser.currentUser()!.username
    self.object["company_name"] = company_name
    self.object["email"] = PFUser.currentUser()!.email


    self.object.saveEventually { (success, error) -> Void in

        if (error == nil) {

        }else {

            println(error!.userInfo)

        }

    }

    self.navigationController?.popToRootViewControllerAnimated(true)

}



}
2

2 Answers

2
votes

Change:

 let sendButton = UIBarButtonItem(title: "Save", style: UIBarButtonItemStyle.Plain, target: self, action: "saveit")

TO:

let sendButton = UIBarButtonItem(title: "Save", style: UIBarButtonItemStyle.Plain, target: self, action: "saveit:")

or remove sender: AnyObject in saveit method.

0
votes

Because the saveit function has a parameter. you have to add : into the sendButton's action.

 let sendButton = UIBarButtonItem(title: "Save", style: UIBarButtonItemStyle.Plain, target: self, action: "saveit:")