Implement Objective C code in Swift [closed] - ios

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I am trying to handle the pressing of the back button on a UI Navigation bar. I have an extension in objective C (https://github.com/onegray/UIViewController-BackButtonHandler) and i have bridged it to my project in Swift using the header, now I do not quite know how to implement the code in Swift. This is the implementation in C:
-(BOOL) navigationShouldPopOnBackButton {
if(needsShowConfirmation) {
// Show confirmation alert
// ...
return NO; // Ignore 'Back' button this time
}
return YES; // Process 'Back' button click and Pop view controler
}

func navigationShouldPopOnBackButton() -> Bool {
if(needsShowConfirmation) {
// Show confirmation alert
// ...
return false // Ignore 'Back' button this time
}
return true // Process 'Back' button click and Pop view controller
}

Related

Swift textfield text 1 to 9 if user entered need to show alert [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 4 years ago.
Improve this question
I am trying simple logic, I have only one textfield. into this textfield if user entered 1 to 9 I need to show alert using if.
if emailTextField.text < 0 {
print("100%")
}
UITextField's text is always a String. So if you need to check if it is a particular number, you need to cast the String value to an Int.
if let number = Int(emailTextField.text!), (0...9).contains(number) {
print("100%)
}
Note: You might want to check out the UITextFieldDelegate methods if your logic revolves around text field editing events.
yourTextField.addTarget(self, action: #selector(valueChanged(_:)), for: .valueChanged)
.
.
.
#objc func valueChanged(_ textField: UITextField) {
if let number = Int(emailTextField.text!), (0...9).contains(number) {
print("100%)
}
}
Sidenote: I have no idea what your use case is for this.

Programmatically return to first controller on event of THAT first controller [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
In my Swift project, ViewController #1 has a route of destinations listed in a table. User is driving along and we keep track of where user is using the built-in CLLocation stuff. But user has now navigated away from ViewController #1 to some other portion of the app and is now in ViewController #2. A certain event that I track in ViewController #1 fires (in my example; the user has reached the next destination on his list). I need the app to immediately segue back to ViewController #1 right when that event fires. How can it be sensed when user is in ViewController #2?
NSNotificationCenter and an Unwind Segue seems to be the way to go, this way this functionality can be reused, all you would need to do is register for a given notification on the relevant view controllers.
Something along the lines of:
class ViewControllerOne: UIViewController {
let CallForUnwindSegue = "com.yourIdentifier.unwindToVCOne"
//- your event happens
SomethingHappened {
NSNotificationCenter.defaultCenter().postNotification(CallForUnwindSegue, object: nil)
}
}
class ViewControllerTwo: UIViewController {
let CallForUnwindSegue = "com.yourIdentifier.unwindToVCOne"
override func viewDidLoad() {
super.viewDidLoad()
//- Subscribe for notifications
NSNotificationCenter.defaultCenter().addObserver(self, #selector(self.doSomething), name: CallForUnwindSegue)
}
//- Unsubscribe for notifications
override func deinit {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
func doSomething(notification: NSNotification) {
//Handle your event here.
}
}
There's a good unwind segue article here

UITextField text disappearing while typing [closed]

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 5 years ago.
Improve this question
Strange behaviour observed on UITextField text disappears,
Steps:
Type text in UITextField and click home button.
Open another application (App) and click home button.
Then Open First App the UITextField in text is disappears.
Issue observed in IPhone 6s version 9.2.1. but perfectly working in simulator.
You can override this method in your custom responders to update your object's state or perform some action such as highlighting the selection. If you override this method, you must call super at some point in your implementation.
The custom Class should be similar to:
class CustomSecureTextField: UITextField {
override func becomeFirstResponder() -> Bool {
super.becomeFirstResponder()
//if !isSecureTextEntry {
// return true
//}
if let currentText = text {
insertText(currentText)
}
return true
}
}

Perform Segue From Another Swift File via a class function [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
How can I use a class function I implement to perform a segue if the class it is held in is not connected to a viewController?
In order to perform a segue, you need the instance of view controller where the segue originates from - for example:
class MyViewController {
}
class MyClass {
showNextView(fromViewController: UIViewController) {
fromViewController.performSegueWithIdentifier("segue_id", sender: fromViewController)
}
}
However I discourage this kind of interaction. Don't tell the view controller how to show a view - let it do on its own, and just ask it.
So, I suggest creating an instance method in your view controller:
class MyViewController {
...
func goToNextView() {
performSegueWithIdentifier("segue_id", sender: self)
}
}
and use that to make the transition:
class MyClass {
showNextView(fromViewController: MyViewController) {
fromViewController.goToNextView()
}
}
You can instruct the currently visible view controller to segue using "performSegueWithIdentifier".
You obviously need a reference to the visible controller.
Inside your method use:
currentViewController.performSegueWithIdentifier("push", sender: currentViewController)

NSNotification for UIAlertController [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
Is there an option to observe and get the information about appearing and disappearing?
I want to grayscale my elements like apple ui-elements by appearing of UIAlertController!
Since now i found out that the "_UIBackdropViewComputeAndApplySettingsNotification" was called and contains userInfo about the appearing view.
You are going to make the UIAlertController's view appear, so how can you not know? You don't need to observe it; you're doing it (by calling presentViewController...).
That takes of what happens when the alert appears. What about when it disappears? Well, it disappears because the user tapped a button. You get to write the handler for every button in the alert. So again, you know when the alert is disappearing, because your handler is running.
The solution is, everything works automatically. You just have to implement..
override func tintColorDidChange() {
self.setNeedsDisplay()
}
..and of course working with the tintColor
Thanks matt for quick answer!
To expand on the other answers: each of your UIView subclasses should implement tintColorDidChange to be notified of the change.
Here's a sample implementation:
class someLabel : UILabel {
override func tintColorDidChange() {
let isInactive = self.tintAdjustmentMode == UIViewTintAdjustmentMode.Dimmed
if (isInactive) {
// modify subviews to look disabled
self.textColor = UIColor.grayColor()
} else {
// modify subviews to look enabled
self.textColor = self.tintColor
}
}
}
A few other good code samples (albeit in Objective-C) can be found in this SO question.

Resources