Boucle à travers subview pour vérifier si UITextField est vide-Swift
<!-Je me demande comment transformer essentiellement le code de l'objectif c ci-dessous en swift.
ceci fera le tour de tous les sous-vues sur ma vue désirée, vérifiera s'ils sont des champs de texte, et vérifiera ensuite s'ils sont vides de non.
for (UIView *view in contentVw.subviews) {
NSLog(@"%@", view);
if ([view isKindOfClass:[UITextField class]]) {
UITextField *textfield = (UITextField *)view;
if (([textfield.text isEqualToString:""])) {
//show error
return;
}
}
}
<!-Voici où je suis avec swift translation jusqu'à présent:
for view in self.view.subviews as [UIView] {
if view.isKindOfClass(UITextField) {
//...
}
}
N'importe quelle aide serait grande!
23
demandé sur
Ryan
2014-08-02 22:06:27
2 réponses
Swift 4 et Swift 3: - Une réponse très simple que vous pouvez comprendre facilement : - vous pouvez manipuler toutes sortes d'objets comme UILable, UITextfields, UIButtons, uivi, UIImages . tout type de objecs etc.
for subviews in self.view.subviews
{
if subviews is UITextField
{
//MARK: - if the sub view is UITextField you can handle here
if subview.text == ""
{
//MARK:- Handle your code
}
}
if subviews is UIImageView
{
//MARK: - check image
if subviews.image == nil
{
//Show or use your code here
}
}
}
2
répondu
Shakeel Ahmed
2018-03-02 21:07:38
mise à Jour pour Swift 2 (et plus tard): à partir de Swift 2 / Xcode 7 cela peut être simplifié.
- en Raison de l'Objective-C "léger génériques",
self.view.subviews
est déjà déclaré que[UIView]
dans Swift, donc la distribution il n'est plus nécessaire. - Énumération et en fonte peut être combiné avec une boucle avec un motif.
Ce qui donne:
for case let textField as UITextField in self.view.subviews {
if textField.text == "" {
// show error
return
}
}
ancienne réponse pour Swift 1.2:
dans Swift c'est bien fait avec le option abattu opérateur as?
:
for view in self.view.subviews as! [UIView] {
if let textField = view as? UITextField {
if textField.text == "" {
// show error
return
}
}
}
Voir "Passer" dans le Livre de Swift.
77
répondu
Martin R
2016-12-08 07:46:35