10
votes

Créer UitabbarController par programme

Je veux créer un uiview pour un uitabbarcontroller

voici mon code pour le fichier .h fichier: xxx

the ViewDidLoadloadload Méthode: xxx

Ceci crée le contrôleur de barre d'onglets, mais quand je clique sur un Barre d'onglets, je reçois une erreur:

thread1: Signal de réception du programme: SIGABRT

EDIT : J'ai résolu le problème en téléchargeant et en modifiant la version de http://www.iphonedevcentral.com/create-uitabbarcontroller/


6 commentaires

Sur quelle ligne obtenez-vous exactement le Sigabrt?


Je l'obtiens sur le Main.M dans "Retour uiapplicationMain (Argc, Argv, Nil, NsstringFromclass ([Classe Appdelegate]));"


Mais ensuite, le Sigabrt tirerait au départ; Vous n'avez pas pu cliquer sur quoi que ce soit ... Comment ressemble la classe d'Appdelegate?


La classe AppDelegate est vide, je n'ai rien ajouté, c'est le seul code que j'ai ajouté. et quand je clique sur un élément dans le tabbarcontroller, je reçois l'erreur SIGABRT


Pourriez-vous fournir la trace de la pile que vous recevez du débogueur? Vous pouvez l'obtenir en affichant la console en Xcode ...


Bonjour, j'essaie d'utiliser la même manière pour ajouter un contrôleur à tabbar à mon application aussi. Mais l'application continue de s'écraser lorsque je clique sur le tabbaritem. Pourriez-vous me dire comment vous avez résolu votre problème? Merci.


5 Réponses :


0
votes

essayer de changer

self.view = tabbarcontroller.view; code> p>

à p>

[Self.view addsubview: tabbarcontroller.view ]; code> p>

Voir si cela aide si cela aide. p>

Essayez également de placer cela dans votre - (void) LoadView p>

- (void)loadView {

    UIView *mv = [[UIView alloc] initWithFrame:CGRectMake(0.0, 100.0, 320.0, 480.0)];

    self.view = mv;

    [mv release];
}


6 commentaires

quand j'ai remplacé "Self.View = tabbarcontroller;" avec [Self.View addsubview: tabbarcontroller.View]; , l'écran est resté noir, bizarre :(


Voyez-vous le tabbarcontroller en bas?


Essayez de régler le cadre tabbarcontroller comme celui-ci tabbarcontroller.view.frame = CGRectureTmake (0, 0, 320, 460);


Avez-vous mis en place la méthode ?


J'ai toujours l'écran noir, et oui je l'ai mis en œuvre


ok j'ai remplacé ce que j'avais sur LockView Methode avec "UIView * MV = [[UIView Alloc] InitwithFrame: CGrectument (0,0, 0,0, 1024, 768.0)]; Self.View = mv;" maintenant je vois le tabbarcontroller, mais quand je clique sur un article, j'ai eu le Sigabrt



0
votes

Changer self.view = tabbarcontroller.view; à
[Self.View addsubview: tabbarcontroller.view]; et cela fonctionne correctement


2 commentaires

quand j'ai remplacé "Self.View = tabbarcontroller;" avec [Self.View addsubview: tabbarcontroller.View]; , l'écran est resté noir, bizarre :(


C'est vraiment étrange, j'ai créé le projet de test plus tôt et cela a fonctionné. Il serait difficile d'aider sans Th de code à ce stade. Utilisez-vous XIBS?



1
votes

Vous dites ci-dessus que vous ne voulez pas créer le tabbarcontroller dans l'Appdelegate. Pourquoi pas? Où voudriez-vous le créer? Le tabbarcontroller doit être le contrôleur de vue racine et ne peut pas être un enfant d'un autre contrôleur d'affichage.

BTW, assurez-vous d'implémenter: P>

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {

    NSUInteger tabIndex = [tabBarController.viewControllers indexOfObject:viewController];

    if (viewController == [tabBarController.viewControllers objectAtIndex:tabIndex] ) {
         return YES;
    }

    return NO;

}


2 commentaires

Je ne veux pas créer T dans l'Appdelegate car je vais ajouter ces classes sur un projet qui a déjà un tabbarcontroller dans le délégué


Vous essayez de créer un tabbarcontroller dans une application qui a déjà un tabbarcontroller? Vous ne pouvez avoir qu'une seule barre d'onglets. Au lieu de créer une nouvelle barre d'onglet supplémentaire, vous devez accéder à celui qui est là.



1
votes
  1. Sous-classe UITABBARCONTROLLER

  2. remplacer la méthode - (vide) LoadView et inclure le code suivant XXX

    C'est à peu près beaucoup.


1 commentaires

J'ai eu des problèmes de remplacement de la méthode Lockview, mais cela a fonctionné pour moi lorsque je l'ai ajouté à la méthode ViewDidLoad.



0
votes

@mehdi, faites simplement votre Te A UitabbarController au lieu d'un UIViewController qui a ensuite une tabbarcontroller. Rend d'autant plus facile de gérer votre tabbarcontroller. Pour répondre à d'autres personnes qui ont indiqué que vous ne pouvez avoir qu'un seul tabbarcontroller en tant que racine de la fenêtre. Ce n'est pas le cas. Un uitabbarController peut être instancié dans plusieurs endroits où vous avez besoin d'une navigation de menu de deuxième niveau. Avoir une barre d'onglets dans une barre d'onglets ne serait pas de sens, mais avoir un menu de navigation de gauche, puis une barre d'onglets sur chaque élément de menu aurait un sens.


0 commentaires