Post

Replies

Boosts

Views

Activity

Assistant not opening the correct swift file
I am trying to open the swift file so that I can Ctrl + Drag from the image cell into the swift file that I generated. The file was generated by New File - Cocao Touch class, previously. With the main.storyboard open and then choosing Assistant, I get the ViewController.h for the scene I am in and not the ExploreCell.swift file that I have just generated. The book I am following as I am a beginner, says that I should set the file as automatic but I can't seem to be able to do that. What am I doing wrong?
11
0
3.8k
Jul ’22
Type 'Segue' has no member 'restaurantList'
I am trying to learn Xcode using a book called 'iOS 14 Programming for Beginners'. Although the book is supposed to show the correct code I have found that it still raises errors when I type in the code. They also have the code online, which I have downloaded and compared to my code, yet I still get errors. Here is the file that produces the errors: // //  ExploreViewController.swift //  EatOut // //  Created by Tony Hudson on 15/07/2021 // import UIKit class ExploreViewController: UIViewController, UICollectionViewDelegate {     @IBOutlet weak var collectionView: UICollectionView!     let manager = ExploreDataManager()     var selectedCity: LocationItem?     var headerView: ExploreHeaderView!     override func viewDidLoad() {         super.viewDidLoad()         initialize()     }     override func prepare(for segue: UIStoryboardSegue, sender: Any?) {         switch segue.identifier {         case Segue.locationList.rawValue: showLocationList(segue: segue)         case Segue.restaurantList.rawValue:   //ERROR HERE showRestaurantListing(segue: segue)         default:             print("Segue not added")         }     }     override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {         if identifier == Segue.restaurantList.rawValue { //AND HERE             guard selectedCity!= nil else { showAlert()               return false             }             return true       }         return true     } } // MARK: Private Extension private extension ExploreViewController {     func initialize() {         manager.fetch()     }     func showLocationList(segue: UIStoryboardSegue) {         guard let navController = segue.destination as? UINavigationController, let viewController = navController.topViewController as? LocationViewController else {             return         }         guard let city = selectedCity else {           return         }         viewController.selectedCity = city     }     func showRestaurantListing(segue: UIStoryboardSegue) {         if let viewController = segue.destination as? RestaurantListViewController, let city = selectedCity, let index = CollectionView.indexPathsForSelectedItems?.first { viewController.selectedType = manager.explore(at: index).name viewController.selectedCity = city         }     }     func showAlert() {         let alertController = UIAlertController(title: "Location Needed", message: "Please select a location.", preferredStyle: .alert)         let okAction = UIAlertAction(title: "OK", style: .default, handler: nil) alertController.addAction(okAction)         present(alertController, animated: true, completion: nil)     }          @IBAction func unwindLocationCancel(segue: UIStoryboardSegue){     }     @IBAction func unwindLocationDone(segue:UIStoryboardSegue) {         if let viewController = segue.source as? LocationViewController {             selectedCity = viewController.selectedCity             if let location = selectedCity { headerView.lblLocation.text = location.full             }         }     } } // MARK: UICollectionViewDataSource extension ExploreViewController: UICollectionViewDataSource {     func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {         let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "header", for: indexPath)         headerView = header as? ExploreHeaderView         return headerView     }     func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {         manager.numberOfItems()     }     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {         let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "exploreCell", for: indexPath) as! ExploreCell         let item = manager.explore(at: indexPath)         cell.lblName.text = item.name         cell.imgExplore.image = UIImage(named: item.image)         return cell     } // Can anyone see why this is producing this error?```
1
0
412
Mar ’22
Can’t view Storyboard and swift code on the same screen
I am just started to learn iOS programming using Xcode. This may seem a stupid question but I can't figure out how to set the screen to show the storyboard on the left and the swift code on the right. I am new to Xcode and am working through an exercise and need the Storyboard scenes and the specific swift file where I need to drag from the scene to the swift file. I have clicked on Assistant and the assistant editor should be set to Automatic LocationViewController.swift. When I click on Assistant with Storyboard selected, it says no Assistant results, if I click on the swift file in the tabs I get 2 copies of the swift file?? I have looked for a tutorial or info on the web but can't find any info on this topic. Could someone please help?
4
0
3.0k
Mar ’22
Value of type 'UIStoryboardSegue' has no member 'indentifier'
I am trying to learn Xcode using iOS 14 Programming for Beginners (Packt Pub). I have had several problems with the code so I have been ultra careful and I can't find any mistakes. There is also another error in the code in an extension in the code. Here is a copy of the code: / //  MapViewController.swift //  EatOut // //  Created by Tony Hudson on 15/07/2021. // Links to: Item -308,318,319,320,321,324,341,352,353 import UIKit import MapKit class MapViewController: UIViewController,MKMapViewDelegate {     @IBOutlet weak var mapView: MKMapView!     let manager = MapDataManager()     var selectedRestaurant: RestaurantItem?     override func viewDidLoad() {         super.viewDidLoad()         initialize()     }     override func prepare(for segue: UIStoryboardSegue, sender: Any?){         switch segue.indentifier! { //<<Value of type 'UIStoryboardSegue' has no member 'indentifier'         case Segue.showDetail.rawValue: showRestaurantDetail(segue: segue)         default:             print("Segue not added")         }     } } // MARK: Private Extension private extension MapViewController {     func initialize() {         mapView.delegate = self         manager.fetch {(annotations) in addMap(annotations)}     }     func addMap(_ annotations: [RestaurantItem]) {         mapView.setRegion(manager.currentRegion(latDelta: 0.5, longDelta: 0.5), animated: true)         mapView.addAnnotations(manager.annotations)     }     func showRestaurantDetail (segue: UIStoryboardSegue){         if let viewController = segue.destination as? RestaurantDetailViewController, let restaurant = selectedRestaurant {             viewController.selectedRestaurant = restaurant         }     } } // MARK: MKMapViewDelegate extension MapViewController: MKMapViewDelegate { //<< Redundant conformance of 'MapViewController' to protocol 'MKMapViewDelegate'     func mapView(_ mapView: MKMapView, annotationView view:MKAnnotationView, calloutAccessoryControlTapped control: UIControl)  {         guard let annotation = mapView.selectedAnnotations.first         else{             return         }         selectedRestaurant = annotation as? RestaurantItem         self.performSegue(withIdentifier: Segue.showDetail.rawValue, sender: self)     }     func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation ) -> MKAnnotationView? {         let identifier = "custompin"         guard !annotation.isKind(of: MKUserLocation.self) else {             return nil         }         var annotationView: MKAnnotationView?         if let customAnnotationView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) {             annotationView = customAnnotationView             annotationView?.annotation = annotation         } else {             let av = MKAnnotationView(annotation: annotation, reuseIdentifier: identifier)             av.rightCalloutAccessoryView = UIButton(type: .detailDisclosure)             annotationView = av         }         if let annotationView = annotationView {             annotationView.canShowCallout = true             annotationView.image = UIImage(named: "custom-annotation")         }         return annotationView     } } I am wondering if there is some action that I have not done previously that is causing these errors. Can anyone help?
1
0
802
Sep ’21
Assistant not opening the correct swift file
I am trying to open the swift file so that I can Ctrl + Drag from the image cell into the swift file that I generated. The file was generated by New File - Cocao Touch class, previously. With the main.storyboard open and then choosing Assistant, I get the ViewController.h for the scene I am in and not the ExploreCell.swift file that I have just generated. The book I am following as I am a beginner, says that I should set the file as automatic but I can't seem to be able to do that. What am I doing wrong?
Replies
11
Boosts
0
Views
3.8k
Activity
Jul ’22
Type 'Segue' has no member 'restaurantList'
I am trying to learn Xcode using a book called 'iOS 14 Programming for Beginners'. Although the book is supposed to show the correct code I have found that it still raises errors when I type in the code. They also have the code online, which I have downloaded and compared to my code, yet I still get errors. Here is the file that produces the errors: // //  ExploreViewController.swift //  EatOut // //  Created by Tony Hudson on 15/07/2021 // import UIKit class ExploreViewController: UIViewController, UICollectionViewDelegate {     @IBOutlet weak var collectionView: UICollectionView!     let manager = ExploreDataManager()     var selectedCity: LocationItem?     var headerView: ExploreHeaderView!     override func viewDidLoad() {         super.viewDidLoad()         initialize()     }     override func prepare(for segue: UIStoryboardSegue, sender: Any?) {         switch segue.identifier {         case Segue.locationList.rawValue: showLocationList(segue: segue)         case Segue.restaurantList.rawValue:   //ERROR HERE showRestaurantListing(segue: segue)         default:             print("Segue not added")         }     }     override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {         if identifier == Segue.restaurantList.rawValue { //AND HERE             guard selectedCity!= nil else { showAlert()               return false             }             return true       }         return true     } } // MARK: Private Extension private extension ExploreViewController {     func initialize() {         manager.fetch()     }     func showLocationList(segue: UIStoryboardSegue) {         guard let navController = segue.destination as? UINavigationController, let viewController = navController.topViewController as? LocationViewController else {             return         }         guard let city = selectedCity else {           return         }         viewController.selectedCity = city     }     func showRestaurantListing(segue: UIStoryboardSegue) {         if let viewController = segue.destination as? RestaurantListViewController, let city = selectedCity, let index = CollectionView.indexPathsForSelectedItems?.first { viewController.selectedType = manager.explore(at: index).name viewController.selectedCity = city         }     }     func showAlert() {         let alertController = UIAlertController(title: "Location Needed", message: "Please select a location.", preferredStyle: .alert)         let okAction = UIAlertAction(title: "OK", style: .default, handler: nil) alertController.addAction(okAction)         present(alertController, animated: true, completion: nil)     }          @IBAction func unwindLocationCancel(segue: UIStoryboardSegue){     }     @IBAction func unwindLocationDone(segue:UIStoryboardSegue) {         if let viewController = segue.source as? LocationViewController {             selectedCity = viewController.selectedCity             if let location = selectedCity { headerView.lblLocation.text = location.full             }         }     } } // MARK: UICollectionViewDataSource extension ExploreViewController: UICollectionViewDataSource {     func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {         let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "header", for: indexPath)         headerView = header as? ExploreHeaderView         return headerView     }     func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {         manager.numberOfItems()     }     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {         let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "exploreCell", for: indexPath) as! ExploreCell         let item = manager.explore(at: indexPath)         cell.lblName.text = item.name         cell.imgExplore.image = UIImage(named: item.image)         return cell     } // Can anyone see why this is producing this error?```
Replies
1
Boosts
0
Views
412
Activity
Mar ’22
Can’t view Storyboard and swift code on the same screen
I am just started to learn iOS programming using Xcode. This may seem a stupid question but I can't figure out how to set the screen to show the storyboard on the left and the swift code on the right. I am new to Xcode and am working through an exercise and need the Storyboard scenes and the specific swift file where I need to drag from the scene to the swift file. I have clicked on Assistant and the assistant editor should be set to Automatic LocationViewController.swift. When I click on Assistant with Storyboard selected, it says no Assistant results, if I click on the swift file in the tabs I get 2 copies of the swift file?? I have looked for a tutorial or info on the web but can't find any info on this topic. Could someone please help?
Replies
4
Boosts
0
Views
3.0k
Activity
Mar ’22
Value of type 'UIStoryboardSegue' has no member 'indentifier'
I am trying to learn Xcode using iOS 14 Programming for Beginners (Packt Pub). I have had several problems with the code so I have been ultra careful and I can't find any mistakes. There is also another error in the code in an extension in the code. Here is a copy of the code: / //  MapViewController.swift //  EatOut // //  Created by Tony Hudson on 15/07/2021. // Links to: Item -308,318,319,320,321,324,341,352,353 import UIKit import MapKit class MapViewController: UIViewController,MKMapViewDelegate {     @IBOutlet weak var mapView: MKMapView!     let manager = MapDataManager()     var selectedRestaurant: RestaurantItem?     override func viewDidLoad() {         super.viewDidLoad()         initialize()     }     override func prepare(for segue: UIStoryboardSegue, sender: Any?){         switch segue.indentifier! { //<<Value of type 'UIStoryboardSegue' has no member 'indentifier'         case Segue.showDetail.rawValue: showRestaurantDetail(segue: segue)         default:             print("Segue not added")         }     } } // MARK: Private Extension private extension MapViewController {     func initialize() {         mapView.delegate = self         manager.fetch {(annotations) in addMap(annotations)}     }     func addMap(_ annotations: [RestaurantItem]) {         mapView.setRegion(manager.currentRegion(latDelta: 0.5, longDelta: 0.5), animated: true)         mapView.addAnnotations(manager.annotations)     }     func showRestaurantDetail (segue: UIStoryboardSegue){         if let viewController = segue.destination as? RestaurantDetailViewController, let restaurant = selectedRestaurant {             viewController.selectedRestaurant = restaurant         }     } } // MARK: MKMapViewDelegate extension MapViewController: MKMapViewDelegate { //<< Redundant conformance of 'MapViewController' to protocol 'MKMapViewDelegate'     func mapView(_ mapView: MKMapView, annotationView view:MKAnnotationView, calloutAccessoryControlTapped control: UIControl)  {         guard let annotation = mapView.selectedAnnotations.first         else{             return         }         selectedRestaurant = annotation as? RestaurantItem         self.performSegue(withIdentifier: Segue.showDetail.rawValue, sender: self)     }     func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation ) -> MKAnnotationView? {         let identifier = "custompin"         guard !annotation.isKind(of: MKUserLocation.self) else {             return nil         }         var annotationView: MKAnnotationView?         if let customAnnotationView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) {             annotationView = customAnnotationView             annotationView?.annotation = annotation         } else {             let av = MKAnnotationView(annotation: annotation, reuseIdentifier: identifier)             av.rightCalloutAccessoryView = UIButton(type: .detailDisclosure)             annotationView = av         }         if let annotationView = annotationView {             annotationView.canShowCallout = true             annotationView.image = UIImage(named: "custom-annotation")         }         return annotationView     } } I am wondering if there is some action that I have not done previously that is causing these errors. Can anyone help?
Replies
1
Boosts
0
Views
802
Activity
Sep ’21