Question

J'ai une vue liste haut dans mon application actuelle de l'iPhone, qui est peuplé par code. J'ai assemblé l'affichage à l'aide d'Interface Builder, il contient beaucoup de UILabels.

Il est évident que je ne voudrais pas avoir name1, name2, etc. points de vente dans ma classe, mais ils préfèrent un tableau de name[10].

Est-il possible de le faire, et se connecter chaque élément à l'étiquette appropriée (ou tout autre constructeur d'interface comme vue)?

Était-ce utile?

La solution

vous ne pouvez pas le faire en IB, mais vous pouvez créer un tableau dans votre méthode de init et ajouter toutes vos étiquettes à lui.

BTW, vous pouvez définir une étiquette à chaque étiquette et définir macro pour y accéder. smth comme

#define NAME[TAG] (UILabel*)[self.view viewWithTag:TAG]

Autres conseils

Vous pouvez bien sûr faire avec le constructeur d'interface, le mot-clé est IBOutletCollection. Ce qu'il fait est fondamentalement un NSArray sur plusieurs points de vente de constructeur d'interface.

IBOutletCollection(UILabel) NSArray *myLabels;

Alors la chose suivante serait la connexion de vos étiquettes dans le constructeur d'interface et vous pouvez utiliser le tableau pour accéder à toutes les étiquettes lors de l'exécution.

Cela peut être fait en utilisant des collections de sortie, voir cette question connexe.

Suivez ces étapes pour créer un tableau de points de vente d'une connexion avec IB Elements (Voici exemple de UIView, vous pouvez utiliser UILabel aussi):

  • Créer un tableau de IBOutlets
  • Ajouter plusieurs UIElements (Vues) dans votre interface Storyboard ViewController
  • Sélectionnez ViewController (Storyboard) et l'inspecteur de connexion ouvert
  • Il y a option « Collections Outlet » dans l'inspecteur de connexion (Vous verrez un tableau de points là-bas)
  • Connectez si avec vos éléments d'interface

-

class ViewController2: UIViewController {


    @IBOutlet var collection:[UIView]!


    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

entrer image description ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top