Hallo zusammen...
Habe da wieder ein dummes Problem. Und zwar habe ich einen Tabbar Controller, der 5 Items besetzt. Das welches ich benötige, ruft eine WebView auf (ATWebViewController). Bis hierhin funktioniert es. Nun habe ich aber mit Code noch einen Kamerabutton hinzugefügt. Der Code sieht so aus im TabBarController.m:
Alles anzeigen
Das funktioniert auch noch, auch mit den Tags, der Button wird entsprechend angezeigt. Nun möchte ich, dass sich bei einem Tap auf die Kamera eben diese öffnet. Dazu habe ich folgenden Code im TabBarController.m:
Alles anzeigen
Im Header File vom Tabbar Controller habe ich das hier drin:
Nun ist das Problem, dass jedes Mal wenn ich das Kamerasymbol antippe, diese Warnung in der Console ausgespuckt wird und es passiert nichts am Gerät:
Wo liegt hier der Fehler?
Habe da wieder ein dummes Problem. Und zwar habe ich einen Tabbar Controller, der 5 Items besetzt. Das welches ich benötige, ruft eine WebView auf (ATWebViewController). Bis hierhin funktioniert es. Nun habe ich aber mit Code noch einen Kamerabutton hinzugefügt. Der Code sieht so aus im TabBarController.m:
Quellcode
- #pragma mark - UITabBarControllerDelegate
- - (void)dismissWebView {
- [self dismissViewControllerAnimated:YES completion:nil];
- }
- - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
- if ([viewController isKindOfClass:[ATWebViewController class]]) {
- NSURL *url = nil;
- if (viewController.tabBarItem.tag == 0) {
- url = [NSURL URLWithString:@"http://---.de"];
- }
- else if (viewController.tabBarItem.tag == 1) {
- url = [NSURL URLWithString:@"http://---.de"];
- }
- // if viewController.tabBarItem.tag==0
- ATWebViewController *webViewController = [[ATWebViewController alloc] initWithNibName:nil bundle:nil URL:url];
- UINavigationController *navigationBarController = [[UINavigationController alloc] initWithRootViewController:webViewController];
- navigationBarController.navigationBar.tintColor = ATNavigationBarTintColor;
- if (viewController.tabBarItem.tag == 0) {
- webViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissWebView)];
- webViewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(TakePhoto)];
- }
- else if (viewController.tabBarItem.tag == 1) {
- webViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissWebView)];
- }
- navigationBarController.modalPresentationStyle = UIModalPresentationFullScreen;
- [self presentModalViewController:navigationBarController animated:YES];
- return NO;
- }
Das funktioniert auch noch, auch mit den Tags, der Button wird entsprechend angezeigt. Nun möchte ich, dass sich bei einem Tap auf die Kamera eben diese öffnet. Dazu habe ich folgenden Code im TabBarController.m:
Quellcode
- #pragma mark - Capture Photo
- - (IBAction)TakePhoto {
- picker = [[UIImagePickerController alloc] init];
- picker.delegate = self;
- [picker setSourceType:UIImagePickerControllerSourceTypeCamera];
- [self presentViewController:picker animated:YES completion:NULL];
- }
- - (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
- image = [info objectForKey:UIImagePickerControllerOriginalImage];
- [imageView setImage:image];
- [self dismissViewControllerAnimated:YES completion:NULL];
- }
- - (void)imagePickerControlerDidCancel:(UIImagePickerController *)picker {
- [self dismissViewControllerAnimated:YES completion:NULL];
- }
Im Header File vom Tabbar Controller habe ich das hier drin:
Nun ist das Problem, dass jedes Mal wenn ich das Kamerasymbol antippe, diese Warnung in der Console ausgespuckt wird und es passiert nichts am Gerät:
Warning: Attempt to present <UIImagePickerController: 0x208da170> on <ATTabBarController: 0x1f54f780> whose view is not in the window hierarchy!
Wo liegt hier der Fehler?