Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

reason: '-[_UIFullscreenPresentationController adaptivePresentationController]:

I have added search bar to my tableview.But when i search some thing in my table view and if i press cancel default button for search bar to dismiss my keyboard means my app getting crash.

Crash report :

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_UIFullscreenPresentationController adaptivePresentationController]: unrecognized selector sent to instance 0x7ff10a88cd80'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000010b18ed85 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x000000010ca8adeb objc_exception_throw + 48
    2   CoreFoundation                      0x000000010b197d3d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
    3   CoreFoundation                      0x000000010b0ddcfa ___forwarding___ + 970
    4   CoreFoundation                      0x000000010b0dd8a8 _CF_forwarding_prep_0 + 120
    5   UIKit                               0x000000010dfda4c2 -[UISearchController _searchPresentationController] + 134
    6   UIKit                               0x000000010db8ad77 -[_UISearchControllerTransplantSearchBarAnimator animateTransition:] + 215
    7   UIKit                               0x000000010d6f148f __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 2638
    8   UIKit                               0x000000010d58ef62 _runAfterCACommitDeferredBlocks + 317
    9   UIKit                               0x000000010d5a2e4c _cleanUpAfterCAFlushAndRunDeferredBlocks + 95
    10  UIKit                               0x000000010d5af147 _afterCACommitHandler + 90
    11  CoreFoundation                      0x000000010b0b3c37 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
    12  CoreFoundation                      0x000000010b0b3ba7 __CFRunLoopDoObservers + 391
    13  CoreFoundation                      0x000000010b0a97fb __CFRunLoopRun + 1147
    14  CoreFoundation                      0x000000010b0a90f8 CFRunLoopRunSpecific + 488
    15  GraphicsServices                    0x000000010ff92ad2 GSEventRunModal + 161
    16  UIKit                               0x000000010d582f09 UIApplicationMain + 171
    17  Screen 6                            0x000000010a791e82 main + 114
    18  libdyld.dylib                       0x000000010f1c892d start + 1
    19  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

Here is my code :

import UIKit
import CoreLocation

class ContainerViewController: UIViewController, CLLocationManagerDelegate, UITableViewDelegate, UITableViewDataSource {


       let searchConroller = UISearchController(searchResultsController: nil)



    @IBOutlet var TableViewList: UITableView!

       // array to store the value from json
    var arrDict = [Businessdata]()
     var filteredData = [Businessdata]()
    var marrFilteredCountryList = [String]()


    override func viewDidLoad() {

        super.viewDidLoad()
          searchConroller.searchBar.hidden = true





     searchConroller.searchResultsUpdater = self
        searchConroller.dimsBackgroundDuringPresentation = false
        definesPresentationContext = true


    }



    func filterContentForSearch(searchText: String, scope: String = "All")
    {

        filteredData = arrDict.filter { Businessdata in
            return Businessdata.BusinessName!.lowercaseString.containsString(searchText.lowercaseString)
        }
        TableViewList.reloadData()
    }

    override func viewDidAppear(animated: Bool)
    {
        self.LocationLabel.text = "in Toronto, ON"
        self.TypeLabel.text = BTdata?.BTNames
        self.BTypeId = BTdata?.BTIds
        LoadBusinesses()
    }



    override func viewWillDisappear(animated: Bool)
    {
        super.viewWillDisappear(animated)
        self.navigationController?.navigationBarHidden = false
    }


    @IBAction func searchPressed(sender: AnyObject)
    {
//        



        if searchConroller.searchBar.hidden
        {
             searchConroller.searchBar.hidden = false
            TableViewList.tableHeaderView = searchConroller.searchBar
             //yConstraint.constant = 44;
        }
        else
        {
            searchConroller.searchBar.hidden = true
            //-searchBar.bounds.height
              yConstraint.constant = 0;

        }

    }


    // web services method
    func LoadBusinesses()
    {
        self.arrDict.removeAll()

        let token = NSUserDefaults.standardUserDefaults().valueForKey("access_token") as! String

        let headers = ["x-access-token": token]

        var StringUrl:String = "http://some url”

        StringUrl += "?lat=\(self.NewCurrentLatitude)"

        StringUrl += "&long=\(self.NewCurrentLongitude)"

        let request = NSMutableURLRequest(URL: NSURL(string: StringUrl)!,
                                          cachePolicy: .UseProtocolCachePolicy,
                                          timeoutInterval: 10.0)
        request.HTTPMethod = "GET"
        request.allHTTPHeaderFields = headers

        let session = NSURLSession.sharedSession()
        let dataTask = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
            if (error != nil)
            {
                print(error)
            }
            else
            {
                dispatch_async(dispatch_get_main_queue(),{

                if let json = (try? NSJSONSerialization.JSONObjectWithData(data!, options: [])) as? NSDictionary
                {
                    let success = json["success"] as? Int

                    if (success == 1)
                    {
                        if let reposArray = json["data"] as? [NSDictionary]
                        {
                                for item in reposArray
                                {
                                    let itemObj = item as? Dictionary<String,AnyObject>

                                    let b_type = itemObj!["business_type"]

                                    // taxis type
                                    if (b_type as? String == self.BTypeId)
                                    {
                                        self.arrDict.append(Businessdata(json:item))
                                        self.TableViewList.reloadData()
                                    }
                                }
                        }
                    }
                    else
                    {
                        let message = json["message"] as? String
                        print(message)
                    }
                }
                else
                {
                    print("Json Data error")
                }
                })
            }
        })
        dataTask.resume()
    }


    func numberOfSectionsInTableView(tableView: UITableView) -> Int
    {
        //
        var numOfSection: NSInteger = 0

        if arrDict.count > 0
        {
            self.TableViewList.backgroundView = nil
            numOfSection = 1
        }
        else
        {
            let noDataLabel: UILabel = UILabel(frame: CGRectMake(0, 0, self.TableViewList.bounds.size.width, self.TableViewList.bounds.size.height))
            noDataLabel.text = "No Data Available"
            noDataLabel.textColor = UIColor(red: 22.0/255.0, green: 106.0/255.0, blue: 176.0/255.0, alpha: 1.0)
            noDataLabel.textAlignment = NSTextAlignment.Center
            self.TableViewList.backgroundView = noDataLabel
        }
        return numOfSection
    }


    // number of rows
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        ResultCount.text = String(self.arrDict.count)+" Results"

//        if searchConroller.active && searchConroller.searchBar.text = "" {
//            
//            return filteredData.count
//        }

        if searchConroller.active && searchConroller.searchBar.text! != "" {

             return filteredData.count
        }
        else
        {
       return self.arrDict.count
        }
    }

    // header view
    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
    {
        let headerView = UIView()
        headerView.backgroundColor = UIColor.clearColor()
        return headerView
    }

    // calling each cell based on tap and users ( premium / non premium )
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        if((arrDict[indexPath.row].FeaturedBusiness) != nil)
        {
            let cell1:premiumUsercell = tableView.dequeueReusableCellWithIdentifier("cell3") as! premiumUsercell

            cell1.phoneNumber = arrDict[indexPath.section].ContactNumber!
            cell1.vendorName3.text = arrDict[indexPath.section].BusinessName
            cell1.vendorAdddress3.text = arrDict[indexPath.section].Address
            cell1.VendorRating3.rating = arrDict[indexPath.section].Rating!

            cell1.latlng = arrDict[indexPath.section].BusinessLatLng!

            latlng = arrDict[indexPath.section].BusinessLatLng!


            let FeaturedValues = arrDict[indexPath.row].FeaturedBusiness

            cell1.FeaturedDisplayText.text = FeaturedValues!.valueForKey("display_text") as? String

            let BImage = arrDict[indexPath.section].StoreImages

            let BMainImage = BImage![0] as! NSDictionary

            let FinalImage = BMainImage.valueForKey("url") as! String

            if let imgURL2 = NSURL(string: FinalImage)
            {
                let request: NSURLRequest = NSURLRequest(URL: imgURL2)

                let session = NSURLSession.sharedSession()

                let Imgtask = session.dataTaskWithRequest(request)
                {
                    (data, response, error) -> Void in

                    if (error == nil && data != nil)
                    {
                        func display_image()
                        {
                            cell1.vendorImage.image = UIImage(data: data!)
                        }
                        dispatch_async(dispatch_get_main_queue(), display_image)
                    }
                }
                Imgtask.resume()
            }
            cell1.getDirectionButton.addTarget(self, action: #selector(ContainerViewController.GetDirection), forControlEvents: UIControlEvents.TouchUpInside)

            return cell1
        }




        if searchConroller.active && searchConroller.searchBar.text! != "" {



            let cell:customCell = tableView.dequeueReusableCellWithIdentifier("cell") as! customCell

            cell.vendorName.text = filteredData[indexPath.row].BusinessName
            cell.vendorAddress.text = filteredData[indexPath.row].Address
            cell.VendorRating.rating = filteredData[indexPath.row].Rating!
            return cell
        }
        else

        {
            let cell:customCell = tableView.dequeueReusableCellWithIdentifier("cell") as! customCell

            cell.vendorName.text = arrDict[indexPath.row].BusinessName
            cell.vendorAddress.text = arrDict[indexPath.row].Address
            cell.VendorRating.rating = arrDict[indexPath.row].Rating!
            return cell
        }
    }


    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
    {
        let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

        let vc: BusinessDetailViewController = storyboard.instantiateViewControllerWithIdentifier("BusinessDetailViewController") as! BusinessDetailViewController

        if searchConroller.active && searchConroller.searchBar.text! != "" {
            vc.BusinessData = filteredData[indexPath.row]

        }
        else {
            vc.BusinessData = arrDict[indexPath.row]

        }


      self.presentViewController(vc, animated: true, completion: nil)


    }



}

extension ContainerViewController: UISearchResultsUpdating {
    func updateSearchResultsForSearchController(searchController: UISearchController) {
        filterContentForSearch(searchConroller.searchBar.text!)
    }

}

This is my first project , please help me out.How to solve.

Thanks

like image 465
user6318432 Avatar asked May 11 '16 05:05

user6318432


People also ask

What do you get with reason?

Get awesome software, professional instruments and effects and all the musical building blocks you need just €1 your first month. Whether you feel most at home in Pro Tools, Ableton Live, Logic Pro or FL Studio, Reason is the perfect expansion to your favorite DAW.

Why choose reason AV?

With one of the strongest engines in the AV industry, Reason continuosly updates and maintains a library of millions of suspected malicious files. Reason's innovative thinking and advanced technology enable comprehensive threat detection and real-time response.

Why do people like reason so much?

The sounds in Reason are super crisp. Reason’s instruments and effects are intutive to use but also massively flexible and powerful. We use cookies to improve your site experience. By using our websites you consent to this in accordance with the cookie section in our Privacy Policy.

What updates are included in reason+?

All updates are included in Reason+ to keep you sounding fresh! Sound Packs are music-making building blocks to inspire you and speed up your creative process. Every week we release new Sound Packs by world-class sound designers. Imagine the simplicity of samples but with added flexibility and creative possibilities.


2 Answers

This can happen if the button being tapped attempts to modally present a new view controller. Since a UISearchController is already being presented, this can cause unexpected behavior or raise an exception.

If there is any code in your button action that is triggering a segue, try changing the type of segue to Show. If you're using interface builder, this would be the Kind property in the attributes inspector.

like image 105
Thomas Jeans Avatar answered Oct 12 '22 22:10

Thomas Jeans


you can try set definesPresentationContext to true in ContainerViewController

definesPresentationContext = true
like image 42
Паша Матюхин Avatar answered Oct 12 '22 22:10

Паша Матюхин