Comment puis-je créer UIViewController à l'aide de Xib-fichier?

Désolé si cette question a déjà été répondu, mais je ne peux pas trouver une réponse.

Je suis la création d'une application dans laquelle j'ai un UITableViewController et lorsque le accessorybutton dans le côté droit d'une cellule est sélectionnée, une nouvelle instance d'un UIViewController devrait être créé avec l'interface trouvé dans une .xib-fichier. La nouvelle UIViewController sera ensuite poussé sur la pile et de l'affiche.
Ma question est comment puis-je créer la nouvelle UIViewController à partir d'un existant .xib-fichier?

C'est ce que j'ai essayé jusqu'à présent:
Dans Xcode: Fichier -> Nouveau Fichier -> Cocoa Touch Classe -> sous-classe UIViewController.
Case à cocher "UITableViewController sous-classe" décochée.
Case à cocher "Avec XIB pour l'interface utilisateur" est cochée.

Cela crée un .m, une .h et un .xib fichier. J'ai créé une interface utilisateur dans la "vue" dans le .xib-fichier. La sélection de "propriétaire du Fichier" dans interface builder montre le nouvellement créé UIViewController dans "Identité de Classe".

Code:

Dans DetailViewController.m (le nouveau UIViewController):

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
     return self;
}

Dans SubViewController.m (le vieux UITableViewController):

-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{
     DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
     //Exception thrown at line below
     [self.navigationController pushViewController:detailViewController animated:YES];
     [detailViewController release];
}

Oublié de mentionner que la .xib-nom du fichier est "DetailViewController.xib".

Le code se compile bien, mais quand je le lance dans le simulateur et appuyez sur une accessorybutton il s'arrête en raison d'exception non interceptée.

Ce qui me manque?

Merci d'avance

  • Dans Xcode, définissez un point d'arrêt pour objc_exception_thrown donc GDB s'arrête lorsque l'exception est levée, de sorte que vous pouvez voir le stack-trace et un aperçu des informations que vous aurez probablement besoin.
  • Aussi, dans la console, vous devez obtenir un journal à propos de l'exception non interceptée. Ajoutez-le à votre question, comme c'est généralement fournit un indice important à propos de ce qui s'est passé.
  • Ok, je suis nouveau sur Xcode donc je vais regarder à cela. Mais il devrait fonctionner de cette façon? Je ne suis pas loin? Le initWithNibName méthode et tout ce qui semble être correct?
InformationsquelleAutor Isak T. | 2010-01-15