Comment puis-je connecter un IBOutlet à une UIView?
Je suis en train de changer de vue après une animation comme on le voit:
[UIView beginAnimations: @"Fade Out" context:nil];
[UIView setAnimationDelay:1.0];
[UIView setAnimationDuration:0.25];
splash.alpha = 0.0;
[UIView commitAnimations];
[self.view addSubview : view];
À la [self.view addSubview : view];
j'ai du ajouter un nom pour la vue à ajouter, j'ai donc fait une IBOutlet
comme suit: (sur la première vue du contrôleur .h fichier)
IBOutlet UIView *main;
Mais quand j'essaie de connecter le *main
UIView
de la vue sur le storyboard, il ne me laissera pas...
Merci beaucoup les gars.
OriginalL'auteur Jon Sullivan | 2013-01-29
Vous devez vous connecter pour publier un commentaire.
Votre point de confusion entre la création d'objets de l'INTERFACE utilisateur dans le code vs de les créer graphiquement à l'aide de Interface Builder /storyboard.
Un indice à votre utilisation du préprocesseur conseil "IBOutlet'. IB est pour Interface Builder == création graphique (à l'aide d'un scénario ou un fichier xib).
Si la création de storyboard...
créer un IBOutlet bien comme vous l'avez fait, bien que toute la syntaxe correcte est
@property (nonatomic, weak) IBOutlet UIView *main;
faites glisser un affichage personnalisé" vue depuis la bibliothèque d'objets à votre scénario de la scène.
Tout l'objet d'un IBOutlet est de vous donner une référence à un élément dans votre scénario de la scène que vous pouvez utiliser dans votre code.
Vous n'aurez pas besoin de le faire:
comme il est déjà créé et ajouté dans votre storyboard. Assurez-vous qu'il se trouve que vous attendez de votre point de vue de la hiérarchie.
Si la création dans le code...
Déclarer une propriété dans votre @interface
(Pas besoin de
IBOutlet
que vous n'êtes pas la liaison dans votre storyboard. Déclaré "fort" au lieu de "faible", dans le cas où vous n'avez pas immédiatement l'attribuer à un point de vue de la hiérarchie).Avant d'ajouter cette ligne
vous devez vous poser: êtes-vous de l'ajout d'un nouveau point de vue qui n'existe pas dans votre table de montage séquentiel/xib? Si oui, vous ne pouvez pas ajouter jusqu'à ce que vous l'avez créé. (L'ajout d'un point de vue qui EST dans votre scénario ne fait pas de sens, car il est déjà là, dans votre scénario de la scène).
Si, comme vous semblez le faire dans le code - vous besoin pour créer la vue avant de l'ajouter.
ensemble de châssis de la propriété, de sorte que nous savons d'où il apparaîtra lorsque vous l'ajoutez à la vue de la hiérarchie
Affecter votre nouvellement créé vue de la propriété
L'ajouter à votre point de vue de la hiérarchie
Maintenant, vous pouvez vous référer au code à l'aide de l'auto.principal. C'est juste que ce serait si vous avez ajouté de l'IB/storyboard et CTRL-a traîné un lien de référence à votre IBOutlet.
Si vous êtes à la création de votre point de vue dans le code et ajouter immédiatement à une vue de la hiérarchie, une alternative à la déclaration d'une propriété est de définir le (numérique) de la balise de propriété sur la vue, vous pouvez vous référer à la vue à l'aide de c'est superview de
viewWithTag:
méthodeLa seule chose que vous ne peut pas faire est de créer l'affichage dans le code, puis de le manipuler à l'aide de la table de montage séquentiel.
J'espère que cela est utile, j'ai peur de peut être déroutant vous!
OriginalL'auteur foundry
Je suis en retard pour cette. Mais permettez-moi de poster ce que j'ai découvert récemment, de toute façon.
J'ai cette situation :
1) BaseViewController qui contient MenuView(Personnalisé UIView)
2) MenuView contient menuTable qui détient tous les éléments de menu
3) Sur le StoryBoard, j'ai BaseViewController scène avec MenuView et MenuTableView
Je pourrais avoir IBOutlet référence à menuTable que nous faisons normalement en faisant glisser le tableau de la maquette à la BaseViewController.h.
Mais je veux la coutume MenuView être responsable de remplir le MenuTable comme une séparation des préoccupations. Pour ce faire j'ai besoin de IBOutlet connexion de référence de MenuView.h pour le menu de la table sur la table de montage séquentiel.
C'est donc ce que j'ai fait :
1) tout d'Abord créer IBOutlet propriété de la table dans MenuView.h
@property (faible,nonatomic) IBOutlet UITableView *menuTable;
2) une Fois que la propriété est créée, il y a un petit cercle à gauche de la déclaration de la propriété ce qui signifie que cette est IBOutlet variable.
3) Maintenant, avec StoryBoard ouvrir et MenuView.h ouvrez l'Assistant de l'Éditeur dans XCode, je peux cliquer sur le cercle et faites-le glisser vers la table sur la table de montage séquentiel.
(Note: Si j'essaie de la faire glisser la table de StoryBoard pour MenuView.h , il ne me laisse pas. Remarque assurez-vous pourquoi)
Que c'est. Maintenant, j'ai fait le IBOutlect connexion de la coutume UiView au StoryBoard.
Note : j'utilise XCode 7 et le ciblage iOS 7 et dispositifs ci-dessus. (Si cela fait une différence)
OriginalL'auteur Lin
Si vous êtes nouveau à Xcode ou des Storyboards que vous devriez jeter un oeil à ce Tutoriel de base:
Début des Storyboards dans iOS 5 Partie 1
Début des Storyboards dans iOS 5 Partie 2
OriginalL'auteur CRDave
Êtes-vous déclarer la vue comme une propriété?
La syntaxe devrait être quelque chose comme ceci:
OriginalL'auteur bindsniper001