2

Presque tous les exemples UINavigationController montrent l'utilisation de initWithNibName: bundle: pour charger un NIB ne contenant pas un UIViewController entier (ou une sous-classe) mais juste un UIView, avec la propriété du propriétaire du fichier NIB définie sur UIViewController (ou la sous-classe appropriée) et son point de vue pointé sur l'UIView.Possibilité d'initialiser un UITableViewController entier (ou une sous-classe) à partir d'un NIB secondaire ... pas seulement un UIView?

Pourquoi est-ce? Pourquoi ne pouvez-vous pas instancier un UIViewController complet (en particulier un UITableViewController) à partir d'une NIB secondaire? Et pourquoi avez-vous même besoin de définir la prise de vue dans IB? Je ne comprends pas le point de créer une vue blanche vide qui sera quand même entièrement ignorée par un UITableViewController.

Dans la NIB de MainWindow, vous pouvez faire les deux choses que vous ne pouvez apparemment pas faire à partir d'un NIB secondaire. Vous pouvez configurer un UINavigationController, et ensuite vous pouvez configurer un UITableViewController (ou une sous-classe). Et vous n'avez pas besoin de créer un objet UIView complètement superflue - plutôt utile, puisque le point entier (je pensais!) D'un UITableViewController est qu'il crée et gère une vue de table associée pour vous en utilisant ses méthodes de délégué.

Que se passe-t-il ici? Suis-je stupide? Y a-t-il une autre façon de faire ce que je veux? Ou y a-t-il une raison logique pour que les choses soient comme elles sont?

Répondre

3

Dans IB, créez une nouvelle pointe "vide" et faites glisser un "Table View Controller" à partir de la bibliothèque.

Ou ai-je mal compris la question?

+0

Hey zaph. Il est assez facile de faire comme vous le suggérez, mais beaucoup plus difficile (pour moi au moins) d'utiliser ensuite le fichier NIB résultant. Plus précisément, lorsque j'exécute la ligne de code suivante ... UITableViewController * mySecondaryTableViewController = [[UITableViewController alloc] initWithNibName: @ "Ensemble SecondaryTableViewController": nil]; ... Je reçois l'erreur suivante dans la console: '- [UIViewController _loadViewFromNibNamed: bundle:] a chargé la plume "SecondaryTableViewController" mais la prise de vue n'a pas été définie.' – kennethmac2000

+0

initWithNibName: bundle: attend une NIB contenant un UIView. Je ne veux pas créer un NIB avec un UIView, puisque mon contrôleur est un UITableViewController qui créera un UITableView lui-même. Comment puis-je réellement transformer le fichier NIB contenant un contrôleur Table View (comme vous l'avez suggéré) en un UITableViewController adressable par programmation? – kennethmac2000

+0

EX: [[NSBundle mainBundle] loadNibNamed: @ "LapC" propriétaire: auto-options: néant]; – zaph

Questions connexes