pushViewController @ NRGridView

Salut,



je rencontre en ce moment un petit soucis que je n'arrive pas à  résoudre, voila, j'ai une classe "AppViewController" qui hérite de NRGridViewController et une classe définit en grande partie via mon storyboard du nom de FormViewController et qui hérite d'un simple UIViewController.

Mon soucis étant que depuis le FormViewController j'arrive à  push vers AppViewController sans soucis:
[color=#578187]AppViewController[/color][color=#000000] *appliViewController = [[[/color][color=#578187]AppViewController[/color][color=#000000] [/color][color=#401082]alloc[/color][color=#000000]] [/color]initWithGridLayoutStyle[color=#000000]:[/color]NRGridViewLayoutStyleVertical[color=#000000]];[/color]<br />
				[[color=#b41ca4]self[/color].[color=#7134aa]navigationController[/color] [color=#401082]pushViewController[/color]:appliViewController [color=#401082]animated[/color]:[color=#b41ca4]YES[/color]];


Mais c'est depuis le AppViewController pour push vers mon FormViewController que je m'en sors pas:
[color=#578187]FormulaireViewController[/color][color=#000000] *formViewController=[[/color][color=#b41ca4]self[/color][color=#000000].[/color][color=#7134aa]navigationController[/color][color=#000000].[/color][color=#7134aa]storyboard[/color][color=#000000] [/color]instantiateViewControllerWithIdentifier[color=#000000]:[/color][color=#c72c25]@&quot;Formulaire&quot;[/color][color=#000000]];[/color]<br />
	formViewController.[color=#7134aa]navigationItem[/color].[color=#7134aa]title[/color]=[color=#c72c25]@&quot;Formulaire&quot;[/color];<br />
	[[color=#b41ca4]self[/color].[color=#7134aa]navigationController[/color] [color=#401082]pushViewController[/color]:formViewController [color=#401082]animated[/color]:[color=#b41ca4]YES[/color]];




J'ai ce message d'erreur qui apparait:
Application tried to push a nil view controller on target &lt;UINavigationController: 0x1965a0&gt;.


J'ai l'impression qu'il me dit qu'il ne peut pas push vers un view contrôler nulle !!

Et je vois pas comment faire autrement.

Réponses

  • AliGatorAliGator Membre, Modérateur
    Non il te dit qu'il ne peut pas pousser un viewcontroller nil. Autrement dit, formViewController est nil, donc in fine tu lui demandes donc de faire "pushViewController:nil animated:YES" ce qu'il n'aime pas.

    A tous les coups tu as une typo entre l'identifier de ton storyboard dans le code et celui dans IB (je dis ça je connais rien aux storyboards j'ai jamais utilisé, mais bon)
  • Pourquoi faut-il toujours que tu fasses mention de NRGridView? image/tongue.png' class='bbc_emoticon' alt=':P' />
  • Pour que tu réagisses image/grin.gif' class='bbc_emoticon' alt=';D' />
  • Non plus sérieusement, il se trouve que je l'utilise dans le développement de mon appli et qu'il y a des fois, je m'en sors pas. Dont là  !!"
  • Ouais mais là  ça a aucun rapport image/biggrin.png' class='bbc_emoticon' alt=':D' />
  • Donc du coup, il se situ ou mon problème ?
  • KixxxKixxx Membre
    juillet 2012 modifié #8
    Moi je n'arrive pas comprendre ton message.

    En gros :

    1er push qui fonctionne : FormViewController
    > push
    > AppViewController

    2ème push qui ne fonctionne pas : AppViewController ----> push ----> FormViewController



    C'est bien ça ?

    Je vais peut-être dire une bêtise mais pourquoi tu n'utilises pas [self.navigationController popViewControllerAnimated:YES] pour revenir à  ton premier contrôleur ?
  • Parce que à  la base j'utilise le AppDelegate, pour push soit vers le FormViewController ou le AppViewController, mais j'aurais souhaiter aussi pouvoir push entre les deux.

    Le popViewControllerAnimated, serait niquel comme solution si par exemple le AppDelegate push vers le FormViewController ensuite je push vers AppViewController, ce qui serait dans l'état actuel possible. Sauf que imaginons que le AppDelegate push vers le AppViewController, je fais comment pour push vers le FormViewController ?
  • yass_1988yass_1988 Membre
    juillet 2012 modifié #10
    Quelqu'un peut m'aider ? image/sad.png' class='bbc_emoticon' alt=':(' />

    svp
  • Comme le disait AliGator, le souci doit se situer ici:


    <br />
    FormulaireViewController *formViewController=[self.navigationController.storyboard instantiateViewControllerWithIdentifier:@&quot;Formulaire&quot;];<br />
    


    Concrètement, il n'arrive pas à  récupérer le formViewController à  partir du storyboard. Vérifie que l'identifier existe bien ... Vérifie aussi que self.navigationController.storyboard n'est pas nil.



    Tout comme AliGator, je n'ai pas encore eu l'occasion / le temps de mettre en oeuvre les storyboards ... Je ne pourrais donc pas décoller de la théorie :/



    J.
  • KubernanKubernan Membre
    juillet 2012 modifié #12
    Salut,



    Tu sembles mixer deux types de codes : un sans l'usage du storyboard (premier push), l'autre avec. Pourquoi pas mais je ne suis pas sûr que ça améliore la compréhension général du code.



    Es-tu sûr d'avoir navigation controller défini en tant que initial view controller dans storyboard ?
  • Salut kuberman,



    bien écoute à  partir de mon AppDelegate, j'arrive à  push vers mon FormViewController:
    //AppDelegate.m:<br />
    [color=#7134aa]<br />
    UINavigationController[color=#000000] *navigationController = ([/color]UINavigationController[color=#000000] *)[/color][color=#b41ca4]self[/color][color=#000000].[/color][color=#578187]window[/color][color=#000000].[/color]rootViewController[color=#000000]; [/color][/color]<br />
        [color=#578187]FormulaireViewController[/color] *formViewController = [navigationController.[color=#7134aa]storyboard[/color] [color=#401082]instantiateViewControllerWithIdentifier[/color]:[color=#c72c25]@&quot;Formulaire&quot;[/color]];<br />
        [navigationController [color=#401082]pushViewController[/color]:formViewController [color=#401082]animated[/color]:[color=#b41ca4]YES[/color]];
    




    Et j'arrive aussi a push vers mon AppViewController:
    //AppDelegate.m:<br />
    [color=#38595d]<br />
    [color=#578187]AppViewController[/color][color=#000000] * appliViewController = [[[/color][color=#578187]AppViewController[/color][color=#000000] [/color][color=#401082]alloc[/color][color=#000000]] [/color]initWithGridLayoutStyle[color=#000000]:[/color]NRGridViewLayoutStyleVertical[color=#000000]];[/color][/color]<br />
        [color=#7134aa]UINavigationController[/color]* navigationController = [[[color=#7134aa]UINavigationController[/color] [color=#401082]alloc[/color]] [color=#401082]initWithRootViewController[/color]:appliViewController];<br />
    [[[color=#b41ca4]self[/color] [color=#38595d]window[/color]] [color=#401082]setRootViewController[/color]:navigationController];
    




    Tu veux dire quoi par définir navigation contrôler en tant que initial view controller dans storyboard ?
  • Normalement dans un storyboard tu définis le premier élément de ton interface utilisateur en tant que initial view controller (via l'inspecteur d'attribut de ta scene, option Is Initial View Controller).



    Ainsi quand tu démarre ton application, iOS va lire le storyboard, instancier le view controller initial et l'associer en tant que root view controller à  ta window.



    Mais bon... si tu dis que ton code fonctionne dans ton appDelegate alors je vois pas trop d'où peut provenir ton problème. As-tu vérifier - comme l'indique Julien - que dans AppViewController la propriété self.navigationController.storyboard != nil ?
Connectez-vous ou Inscrivez-vous pour répondre.