2013-06-13 10 views
23

Ich muss ein Programm programmgesteuert erstellen, aber wenn ich auf die Schaltfläche klicken, wird der Ansicht-Controller nicht zum nächsten, Storyboard ID gesetzt und funktioniert immer noch nicht. Fehle ich irgendwelche anderen Überprüfungen, um diese Arbeit zu machen?instanziateViewControllerWithIdentifier - Storyboard-ID-Set, aber immer noch nicht funktioniert

Bitte siehe Code unten:

EntryViewController *entryController = [self.storyboard instantiateViewControllerWithIdentifier:@"go"]; 
[self.navigationController pushViewController:entryController animated:YES]; 

seine mich verrückt. Dank

+2

Ist 'self.storyboard' gesetzt oder ist es gleich Null? – Wain

+0

@Wain wird es wahrscheinlich auf Null gesetzt, weil ich es nicht eingestellt habe, wo setze ich das Storyboard auf self? –

Antwort

6

Verwenden

+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil. 

So versuchen diese

self.storyboard=[UIStoryboard storyboardWithName:@"Your_Story_Board_Name" bundle:[NSBundle mainBundle]]; 
EntryViewController *entryController = [self.storyboard instantiateViewControllerWithIdentifier:@"go"]; 
[self.navigationController pushViewController:entryController animated:YES]; 
+0

hat nicht funktioniert, danke aber –

+0

Ich habe diese Antwort zu Instantiate Soryboard in AppDelegate verwendet. Vielen Dank! –

0

Sie nicht die Ansicht-Controller storyboard einstellen. Es ist schreibgeschützt und wird gesetzt, wenn der View-Controller erstellt wird. Stattdessen müssen Sie das Storyboard von woanders abrufen oder laden.

Sie können das Storyboard über den Stammansicht-Controller von AppDelegate abrufen. Oder verwenden Sie + (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil.

+0

Entschuldigung hat nicht funktioniert Wain –

+0

In welcher Weise hat es nicht funktioniert? – Wain

+0

Es geht nicht zum nächsten View-Controller –

2

die Sie interessieren,

UIStoryboard * storyboardobj=[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 

EntryViewController *entryController = [storyboardobj instantiateViewControllerWithIdentifier:@"go"]; 
[self.navigationController pushViewController:entryController animated:YES]; 
+0

Ich schaute auf ein anderes Beispiel wie dieses, gerade versucht Deins und immer noch kein Glück! –

32

In meinem viewDidLoad ich den Knopf, die goldStarOpen Anrufe platziert haben:

UIButton *btnTwo = [UIButton buttonWithType:UIButtonTypeCustom]; 
btnTwo.frame = CGRectMake(250, 20, 40, 40); 
[btnTwo addTarget:self action:@selector(goldStarOpen) forControlEvents:UIControlEventTouchUpInside]; 
[btnTwo setImage:[UIImage imageNamed:@"GoldStar.png"] forState:UIControlStateNormal]; 
[self.view addSubview:btnTwo]; 

Innen goldStarOpen Ich habe Code, der Ihnen fast identisch ist.

- (void)goldStarOpen 
{ 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName: 
           @"MainStoryboard" bundle:[NSBundle mainBundle]]; 
    UIViewController *myController = [storyboard instantiateViewControllerWithIdentifier:@"GoldStar"]; 
    [self presentViewController:myController animated:YES completion:nil]; 
} 

goldStarOpen aktiviert einen ViewController im Storyboard.

Möglicherweise müssen Sie die Storyboard-ID des View Controllers festlegen, den Sie laden möchten. Dies befindet sich im Inspektor genau unterhalb, wo Sie Ihrem View-Controller eine benutzerdefinierte Klasse zuweisen.

enter image description here

+2

Dies sollte die akzeptierte Antwort – Richmond

+0

sein Ich hatte das gleiche Problem, löste ich es, indem Sie das richtige Modul für die Klasse im Inspektor (siehe Screenshot oben) einstellen. – chris

+0

Kann jemand das beantworten? http://stackoverflow.com/questions/38959445/astoryboard-instantiateviewcontrollerwithidentifiermyid-returns-nil-but-not?noredirect=1#comment65274351_38959445 – harmeet07

3

versuchen diese Storyboard Wählen Sie UIViewController-> Xcode-> Editor-> Emabed In-> Navigation Controller

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"YourStoryboard" 
                 bundle: nil]; 

YourViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier: @"YourViewController"]; 
[self.navigationController pushViewController:vc animated:YES]; 
Verwandte Themen