can multiple buttons be attached to a single IBAction is Xcode 8? - ios

I have tried to connect several buttons to a single IBAction in Xcode 8 however it does not work. I tried the practices outlined here Xcode8 cannot connect multiple/single uibuttons to single #IBAction in swift file still to no avail. can anyone shed some light as to why or if it is simply still just a bug?

Works fine for me in Xcode 8.1 on a new Swift 3 project. You have to control-drag from the button to the center side of the method to select it if it already exists rather than drag to the left side.

change your parameter from (_ sender: Any) to (_ sender: UIButton), and you're good to go.

There is no reason why several buttons should not connect to a single action function in your code. I had no trouble doing this when I tried it, as you can see:
However, if the nib editor interface won't let you form the connection, configure the action-target of the buttons in code.

Double check if you want to add action to a real button
Check if when you wrote the action, you used some customized class instead of UIButton, and the class of your button does not match.

I was able to resolve the issue by upgrading to Xcode 8.1 and including an _ before the sender argument. I believe this is just a bug from Xcode 8 because I tried the latter before upgrading and I was still unable to connect.

Related

How does one remove a IBAction link to main.storyboard

So I have this weird Problem where I have 4 UIButtons in my App not working at all, even though i have double checked on having them correctly linked to the Storyboard. So i tried to disconnect and reconnect them but the icon indicating that its linked didn´t disappear. So I checked what else the function is linked to and it seems somehow it got linked to the main.storyboard, and i guess for that reason, these are the only ones not working.
So I tried to disconnect it from Main.storyboard, but to no success so far.
How can I remove a connection to the storyboard as sender and why does it appear in the first place?
I too did it accidentally for a button.
Connected a correct segue to the button and accidentally connected one more to a UICollectionView and I was getting this :
Checked the storyboard on right clicking the button :
and found the two outlet connected. Removed it on clicking the cross icon and it worked.
If you click on the connection showing in UIViecontroller it will not redirect here.
you can also check all the connected referencing outlets here:
So i fixed the Problem by copying the code to another file and only "rewriting" the functions that were linked to the given problem.
All i could find to this problem was some old answer that explained that the link referrs to a ViewController that the Code originates from: https://stackoverflow.com/a/37324993/10160115
Even though the Code i wrote is not copied it seems that XCode has created exactly such a referral to the storyboard it was linked to, so it linked the function to itself but couldn´t find any Button to link it to so it just linked it to nothingness.
It fixed the problem and the buttons work the way they´re supposed to be now but it´s a weird way of fixing this, but since there seems to be no connections inspector for the storyboard itself i wouldn´t know how else to fix this
To solve this problem you should (for macOS Catalina 10.15.4, Xcode Version 11.1):
Close your project and close Xcode
Open /Users/XXXXX/Library/Developer/Xcode/DerivedData and delete your cache of project
Open /Users/ХХХХХ /Library/Developer/Xcode/DerivedData/ModuleCache.noindex and delete all cache from this directory
Open your project again and click Product > Build

#IBActions for buttons are Disconnected when Added to Code - Swift, Xcode 8

I am currently experiencing a problem in Xcode 8 where, throughout my entire project, whenever I attempt to add an IBAction to a button, the action is disconnected (open circle) in the code.
This problem only occurs in one project; I have tested other projects and the actions are added correctly (closed circle).
Any assistance in solving this problem would be greatly appreciated.
For Xcode 8 please check your action method as it
#IBAction func PrintAgain(_ sender: UIButton) {
}
before sender add _
because if you remove _ from function the xcode add WithSender automatic for function name

I'm getting a lock alert when trying to connect/add elements to the viewcontroller in Xcode 7.3

I have a ViewController that all of the sudden will not allow me to add a new element or connect an existing element to an IBAction. I've looked through sample code as well and googled the s*%& out of it without finding a solution.
My ViewController.swift file contains this code:
#IBAction func helpButtonTapped(sender: AnyObject) {
}
And I'm trying to connect a very basic button.
Also, note that I've double-checked to be sure that all elements and views are set to Lock: Nothing.
Any help would be amazing!
Go to menu Editor then Localization Locking then choose Nothing.
You probably have enabled one of the other locking options accidentally.

iOS 9 Segue Causes App To Freeze (no crash or error thrown)

I have been working on this app for months now and from as far back as I can remember I have never had an issue with segues. The code is unchanged in terms of calling performSegueWithIdentifier but since my recent update to Xcode 7 and iOS 9 I have not been able to tack this issue.
I have tried:
Deleting button and creating new button w/ segue link
Using a direct segue from button to view, without the use of performSegueWithIdentifier
Connecting button to new blank viewController
When I press the button, no initial load functions are called on the destination VC (Ex: ViewDidLoad, ViewWillAppear, etc). When I connect it to a blank view, the segue works fine with the same code in place.
Since the code never stops, or breaks, and just seems to "freeze" in place while still running on Xcode I can't seem to even narrow this down to whats causing the issue. I have a similar segue that is also called from another button on the same ViewController that has no issues whatsoever.
Any thoughts on the matter are greatly appreciated!
EDIT: I have narrowed the issue down to the UITextView's causing the problem. Once the Text Views were removed the page loads fine via segue. I wonder what changed between iOS 8 and iOS 9 in terms of UITextView as I will have to remove the text views and completely re add new text views.
So basically the segue was freezing because of the UITextView's I was using in the destinationViewController. The following fixed the issue:
Delete all UITextView's
Add new UITextView's
you must leave the default lorem imposed text and change this programmatically in the viewDidLoad()
This was the fix for me, and from the research I have done on the issue it seems this is a bug in iOS 9 and Xcode 7.
Cheers!
NOTE: Removing the text in the UITextView (or making it longer then ~12 characters) is sufficient to work around it, no need to delete and recreate them. This is fixed in Xcode 7.1.1 and later.
I ran into the same issue and the fixes in this post (Xcode 7 crash: [NSLocalizableString length] 30000) solved the issue for me.
The first is to enable a localisation other than the base for the storyboard (see https://stackoverflow.com/a/32688815/3718974)
The second is to turn off the base localisation (see https://stackoverflow.com/a/32719247/3718974)
I think I have the same problem: I have a UITabelView with cells created from a nib file, when a user tap a cell this method is called:
and when I have the following method prepareForSegue:: the application crashes:
if I delete the line 129 Everything is ok , the method prepareForSegue:: open the right view and the label contactName is shown with its default text.
If I modify the method as follows prepareForSegue:: get exactly what you expect, without having any type of error:
let me know if you also get the same result
Any one who is facing this issue, i solved it by turning off the "Optimize rendering for windows scale" option in Debug of simulator window. I already had tried all of the above answers but could not solve the issue.
In the method in the first viewController where you activate the segue, do you have beginIgnoringInteractionEvents anywhere? If so the screen you segue to will be frozen and will ignore interaction events like you describe. If this is the case you can fix this by adding an endIgnoringInteractionEvents method before your segue method:
UIApplication.sharedApplication().endIgnoringInteractionEvents()
self.performSegueWithIdentifier("editItemToMyGearSegue", sender: self)
I realize this is an old topic, but appears to be still relevant. I was facing the same problem in Xcode 9, iOS11. My UITextViews are embedded inside UITableViewCells. Same symptoms as described here. The tricks with default text and placeholders did nothing for me, but I solved it by turning off the scrolling indicators for the text view in the xib. They were on by default, I guess, though unused.
Edit: this is probably an important detail... the views that were hanging all had an image NSTextAttachment in the attributed string of the text view. I think the image was wider than the available table cell content. With scrolling turned off, they appear to downscale.

UIButton appears different on runtime

I just added a button to the storyboard, but when I run the simulator it appears like in the following picture:
Can someone explain me why this is happening ? For the record I am using Google+ Platform for IOS sdk.
Is kinda weird. Did you set it up programmatically on your view controller class? if not, try adding it programmatically.
The problem is that if you include GooglePlus.bundle in your project, the button will appear like that. It includes the GPPSignIn button.

Resources