2010-11-17 5 views
0

J'ai toujours utilisé IB mais j'essaie de tout faire par le code et j'échoue à cette tâche.Comment initialiser UIView à partir d'un fichier séparé dans ViewController?

J'ai ViewController pour gérer les entrées de l'utilisateur et 2 UIViews qui seront tous deux visibles en même temps (chacun dans un fichier UIView d'en-tête/mise en œuvre séparée):

1 UIView représente une barre d'onglets personnalisés qui change (bottom 50 px) 1 UIView représente l'interface affichée (tout au-dessus de la barre d'onglets)

Chacun doit exister dans son propre cadre, initialisé à partir du ViewController afin qu'il puisse les contrôler et ce qu'ils affichent.

+0

Vous pouvez facilement utiliser IB ici aussi, sans aucun problème. Il suffit d'ajouter et de dimensionner vos 2 sous-vues dans IB et de définir la 'Classe' pour qu'elle pointe vers le nom de classe UIView approprié. –

+0

Essayer d'apprendre à le faire sans IB. Des idées? – John

Répondre

2

Bra, UIViewControllers ont un seul UIView dans le cadre de leurs tripes.

C'est-à-dire "vue" ... c'est-à-dire ... la propriété réelle view, comme dans self.view = something ou view.hidden = YES.

Cependant, vous pouvez, bien sûr, ajouter autant que vous le souhaitez subviews à ce point de vue.

Voici comment les vues sont utilisées normalement. Presque tous les .view ont des sous-vues à l'intérieur.

UIView *bottomThing = [[UIView alloc] init]; 
bottomThing.frame = CGRectMake whatever 
UIView *otherThing = [[UIView alloc] init]; 
otherThing.frame = CGRectMake whatever 

[view addSubview:bottomThing]; 
[view addSubview:otherThing]; 

Dans l'exemple, nous avons ajouté deux sous-vues à notre vue principale « intégrée », dont vous parlez simplement « vue ». Nous avons donc ajouté bottomView à notre "vue" et nous avons ajouté topView à notre "vue".

Les sous-vues que vous ajoutez peuvent être soit UIView, soit votre propre sous-classe d'UIView.

MySpecialView *bottomThing = [[UIView alloc] init]; 
bottomThing.frame = CGRectMake whatever 
ExtraordinaryView *otherThing = [[UIView alloc] init]; 
otherThing.frame = CGRectMake whatever 

[view addSubview:bottomThing]; 
[view addSubview:otherThing]; 

(Je suppose que FTR est concevable que vous pourriez sous-classe UIViewController d'avoir plus d'un point de vue à l'intérieur, mais c'est tout à fait inutile et sans intérêt pour cette question.)

À partir de votre UIViewController vous pouvez manipuler les sous-vues dans tous les comme tu veux.

Par exemple [bottomThing doStuff:3.7], bottomThing.hidden=YES, etc, etc.

Encore une fois, il est tout à fait normal d'ajouter plus subviews dans votre main « vue » - c'est le moyen de base dans lequel les applications iPhone sont faites. Il n'y a qu'un seul ".view" - vous ajoutez plus de vues à l'intérieur comme vous le souhaitez. J'espère que cela aide.

1
UIView *myView = [[UIView alloc] init]; 
[self.view addSubview:myView]; 
[myView release]; 
Questions connexes