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 6 years ago.
Improve this question
I have a date picker, I want to save the value user gave, so next time user goes back to that view controller, the date picker is still set to the value given last time.
Here's my code:
import UIKit
class Setting: UIViewController {
#IBOutlet weak var datePicker: UIDatePicker!
override func viewDidLoad() {
super.viewDidLoad()
datePicker.datePickerMode = UIDatePickerMode.Time
// Do any additional setup after loading the view.
}
}
Cast it to a variable then load that variable into the data field!
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html
Related
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 3 months ago.
Improve this question
I want to print the name of each swiftUI but on run time if it’s possible
Im trying to print out the name of a swiftUI view like on swift type(of:) but nothing. Any idea?
try something like this, to ...get the name of a SwiftUI view programmatically:
struct MyView: View {
#State var viewName = ""
var body: some View {
Text(viewName)
.onAppear {
viewName = "\(Self.self)"
}
}
}
Or simply:
struct MyView: View {
let viewName = "\(Self.self)"
var body: some View {
Text(viewName)
}
}
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 2 years ago.
Improve this question
I have an array of questions and 3 answers and i want to display the question in the text label and the three answers in each button label. The text label and each button have an outlet. Im a begginer at swift and im having trouble extracting from the array
struct Questions {
let allQuestions = [
"The easiest way to learn is:",
"When buying clothes i usually make the decision on the basis of:"
]
let answers = [
[
"By viewing, reading, and observing how the others carry out certain tasks",
"By listening, discussing and doing according to verbal instructions",
"By doing and experimenting by myself",
],
[
"By their appearance and looks",
"Their practicality and use",
"How comfortable they are or how they feel"
]
]
// Initialise your struct
var questions = Questions()
//Keep track of what question you're on. Update this when you reload view
var questionNumber: Int = 0
//Add buttons to outlet collection
#IBOutlet var answerButtons: [UIButton]!
//Populating a question is simple
let aQuestion = questions.allQuestions[questionNumber]
yourQuestionLabel.text = "\(aQuestion)"
//For answers, loop through buttons outlet collection
for x in 0..<questions.answers[questionNumber].count {
answerButton[x].titleLabel?.text = "\(questions.answers[questionNumber][x])"
}
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.
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 4 years ago.
Improve this question
I am new to MVVM. How should I update the data model in parent view model from child view model?
As an example, suppose I have a CollectionViewModel for a Newsfeed page, it keeps an array of Post (my date model) and an array of CollectionCellViewModel that corresponds to individual posts. Each cell makes network request to listen for new likes. How can I pass this information back to CollectionViewModel and update Post?
You achieve that with multiple ways:
Delegation pattern:
protocol CollectionCellViewModelDelegate {
func onAction()
}
class CollectionCellViewModelDelegate: YourType {
var delegate: CollectionCellViewModelDelegate?
/// Your custom action
func yourCustomAction() {
delegate?.onAction
}
}
then assign .delegate in your parent class and implement onAction() method
Closures:
class CollectionCellViewModelDelegate: YourType {
var yourAction: (()->())?
func yourAction(_ completion: (()->())?) {
yourAction = completion
}
/// Your custom action
func yourCustomAction() {
yourAction?()
}
}
then call your closure with following code from parent class:
child.yourAction { // do custom stuff }
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.