Create an account

Very important

  • To access the important data of the forums, you must be active in each forum and especially in the leaks and database leaks section, send data and after sending the data and activity, data and important content will be opened and visible for you.
  • You will only see chat messages from people who are at or below your level.
  • More than 500,000 database leaks and millions of account leaks are waiting for you, so access and view with more activity.
  • Many important data are inactive and inaccessible for you, so open them with activity. (This will be done automatically)


Thread Rating:
  • 181 Vote(s) - 3.38 Average
  • 1
  • 2
  • 3
  • 4
  • 5
performSegueWithIdentifier has no segue with identifier

#1
I encountered a crash while testing my app. The following image is my storyboard:

![storyboard][1]


I have the code in View Controller:

@IBAction func unwindToHomeScreen(segue:UIStoryboardSegue) {

}

The view of "Add new Item" have a "Cancel" button, I controlled-drag it to the "Exit" icon at the top and link to `unwindToHomeScreen`, it works fine.

The "Add new Item" has a class `AddTableViewController` and the code I wrote inside:

@IBAction func save() {
// Execute the unwind segue and go back to the home screen
performSegueWithIdentifier("unwindToHomeScreen", sender: self)
}

I controlled-drag the "Save" button to the func, but the app crash when I click the button

I can use `dismissViewControllerAnimated(true, completion: nil)` instead, but I just wonder why `performSegueWithIdentifier` can't work?

I read the code at [dropbox.com/s/hpybgg9x67rtqng/foodpinstatictable.zip?dl=0][2] and try to make one and using `performSegueWithIdentifier` like this example for practicing, I didn't see the segue identifier at her, what is the difference?


[1]:

[2]:

[To see links please register here]

Reply

#2
I had it all wired up correctly. It was just that the viewController I was segueing from, was NOT instantiated from the storyboard. I had it instantiated pragmatically.

I initially had it written as:

let vc = DeviceVC()

Had to change it to:

let sb = UIStoryboard(name: "Main", bundle: Bundle(for: DeviceVC.self))
let vc = sb.instantiateViewController(identifier: "DeviceVC") as! DevieVC
Reply

#3
I had the same issue.

All I did was:

I selected the segue indicator in the storyboard.

Deleted it.

Then created a new segue with the same identifier. Boom, it works.
Reply

#4
Swift 4:

Sometimes we must **clean** the build folder and then try again.

Worked for me after ctrl-dragging the new segue and giving it a name, then using it programatically as:

performSegue(withIdentifier: "goToMyNewViewController" , sender: self)
Reply

#5
A possible issue with iOS 12 and earlier (iOS 13 seems not to suffer from the same issue) might come from the fact that *performSegue(withIdentifier:,sender:) is called from the view controller viewdidLoad() callback*.

You absolutely *must invoke it from the **viewDidAppear(_ animated: Bool)** callback* in order to avoid the question-mentioned crash.

That will certainly save hours of hair-puling…
Reply

#6
in my case reorder the Embed in

Tab bar controller
Navigation controller
vc (contains button - tapping button initiates a "show, e.g. push" segue)


Too fix the title in the navigationBar
Reply

#7
for me --> click on the relation-arrow between view controllers and then select attribute inspector, there is identifier give name and select push class done...
Reply

#8
I found that because I renamed my view controller, I needed to delete and recreate the segue.

Reply

#9
You haven't actually given that segue an identifier. `unwindToHomeScreen` is a function that you can call; what you're looking for is your segue identifier, which is set in Interface Builder like this:

![Set an identifier][1]

In this example, I have a button wired to the next view via Interface Builder like you describe ("Interface Builder") and a button that is wired to this `IBAction` in my view controller ("Programmatically"):

@IBAction func goToNextView(sender: UIButton!) {
self.performSegueWithIdentifier:("go", sender: self)
}

In any case, what you're missing is the actual identifier, which can be set in the attributes of a segue created in Interface Builder.


[1]:
Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

©0Day  2016 - 2023 | All Rights Reserved.  Made with    for the community. Connected through