Ustawiłem navController, który pojawia się po naciśnięciu przycisku. Jednakże, jeśli dotknę przycisku, pojawia się błąd: "Warning: Attempt to present <UINavigationController>: 0xab5d9d0 on <MyApp: 0xadaa320> whose view is not in the window hierarchy!
"Którego widoku nie ma w hierarchii okiennej
Czy ktoś wie, jak rozwiązać ten problem? Próbowałem też czegoś na Stackoverflow, ale to nie było moje rozwiązanie.
Oto mój kod do otwierania navigationcontroller:
Nie wiem, czy ktoś wie to album zdjęć, ale jeśli nie, here jest projekt.
Mój kod (MyApp.m):
#import MyApp.h
...
//some stuff
- (void)launchGalleryView
{
MWPhotoBrowser *browser = [[MWPhotoBrowser alloc] initWithDelegate:self];
// Set browser options.
browser.wantsFullScreenLayout = YES;
browser.displayActionButton = NO;
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:browser];
NSMutableArray *photos = [[NSMutableArray alloc] init];
MWPhoto *photo;
photo = [MWPhoto photoWithFilePath:[[NSBundle mainBundle] pathForResource:@"callculator" ofType:@"jpg"]];
photo.caption = @"The calculator is soo beateful...";
[photos addObject:photo];
self.photos = photos;
[self presentModalViewController:navController animated:NO];
}
góry dzięki.
Edit:
jest w Recources i w źródłach kompilacji ale w zasobach widać, że jest czerwony (storyboard). Może to spowodowane?
drugiego kontrolera .h:
@class MyApp;
@interface Second : UIViewController <MWPhotoBrowserDelegate> {
}
@property (nonatomic, retain) MyApp* vC;
@end
Secnond kontroler .m:
#import "Second.h"
#import "MyApp.h"
@interface Second()
@end
@implementation Second
@synthesize vC;
//some stuff in here
//the action
- (IBAction)dothis:(id)sender {
NSLog(@"launch the navcontroller");
[self.vC launchGalleryView];
}
MyApp.h:
#import "Second.h"
@interface myApp : UIViewController <MWPhotoBrowserDelegate> {
}
-(void)launchGalleryView;
NSArray *_photos;
NOWA EDYCJA:
odkryłem, że mam do wywołania metody „launchGalleryView” w viewDidAppear ale w jaki sposób mogę to zrobić bez wywoływania navcontroller każdym widoku obciążenia? Czy ktoś wie, jak to zrobić?
otrzymuję ten błąd, gdy próbuję przedstawić controlle r od kontrolera, który w tej chwili nie jest najwyższy. Upewnij się, że jest najwyższym i nie przedstawia nic innego! –
yuf
jak mogę to zrobić? – MasterRazer
Co jeśli zadzwonisz pod następujący adres: [self dismissViewControllerAnimated: NO complete: nil]; przed presentModalViewController? Co się dzieje? – yuf