2010-12-20 10 views
2


das ist mein Problem.Wie öffne ich eine UIView im Vollbildmodus mit einer Tableiste?

  1. Ich habe eine TabBar-Anwendung.
  2. In der ersten Registerkarte habe ich eine Tabelle.
  3. Beim Klicken auf die Tabelle zeigt es eine modale Ansicht.
  4. Um von modaler Ansicht zur ersten Ansicht zu gehen, verwende ich
[self presentModalViewController:nw animated:YES]; 

Das Problem, dass, wenn ich auf dem Tabbar während klicken zweiten eine modale Ansicht geöffnet wird, öffnet Ansicht, aber die Tabelle der ersten Ansicht funktioniert nicht, da die modale Ansicht noch geöffnet ist, obwohl sie als geschlossen angezeigt wird.

Es ist eine Möglichkeit, modale Ansicht im Vollbildmodus die Tab-Leiste zu öffnen?
Oder auch um zu überprüfen, ob die modale Ansicht geschlossen ist oder nicht von einer anderen Ansicht?


EDIT: ich mit all diesen Code versucht:

nw = [[NewsViewController alloc] initWithNibName:@"NewsViewController" bundle:nil]; 
nw.modalInPopover = YES; 
nw.wantsFullScreenLayout = YES; 
nw.hidesBottomBarWhenPushed = YES; 
nw.contentSizeForViewInPopover = CGSizeMake(320, 480); 
nw.modalPresentationStyle = UIModalPresentationFullScreen; 
nw.view.frame = [[UIScreen mainScreen] applicationFrame]; 
[nw.view setNeedsLayout]; 

aber nichts !!! Es geht nicht im Vollbildmodus !!

Irgendeine Idee bitte?

Dank,
alberto

+0

Welchen View/View Controller präsentieren Sie modal? –

+0

@middaparka: ist die Ansicht, die auf Klick auf Tabellenansicht umdrehen, und schließen, wenn Sie auf [self present .....] klicken – elp

Antwort

0

Gelöst mit Benachrichtigung!

Wenn sich eine Registerkarte ändert, sende ich eine Benachrichtigung und schließe den modalen Controller.

- (BOOL)tabBarController:(UITabBarController *)tbController shouldSelectViewController:(UIViewController *)viewController { 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"DataComplete" object:nil]; 
    return YES; 
} 

Aus meiner Sicht erhalten Klassen eine Benachrichtigung und entlassen den Controller!

- (void)downloadDataComplete:(NSNotification *)notif { 
    NSLog(@"Received Notification"); 

    [self dismissModalViewControllerAnimated:YES]; 
} 

Jetzt ist es möglich, eine modale Ansicht wieder zu öffnen, auch Tab ändern!
Dies ist ein Workaround, funktioniert aber!

alberto.

+0

und wenn Sie einen Vollbildmodus möchten, entfernen Sie das uiviewcontroller-Objekt aus dem Interface Builder! – elp

1

Wenn die Ansicht Sie präsentieren Vollbild ist, sollte dies die Tab-Leiste verschleiern. Das heißt, Sie müssen die Ansicht möglicherweise programmgesteuert so anpassen, dass sie die gleiche Größe wie das UIWindow aufweist.

Sie sollten nach dem Vorbild der ...

[nw setFrame:[[UIScreen mainScreen] applicationFrame]]; 
[nw setNeedsLayout]; 

... um dies zu erreichen, etwas tun können. (Tut mir leid, ich bin im Augenblick auf einer Windows-Box, also kann ich das nicht bestätigen. Hoffentlich wird jemand bei Bedarf Änderungen vornehmen.)

Sie sollten dann die ursprüngliche modale Ansicht über eine Delegate-Methode in der Ursprungsklasse. (Siehe den Abschnitt "Einen Modal View-Controller beenden" in Apples View Controller Programming Guide for iOS.) Die ursprüngliche Klasse würde dann über die modale Ansicht verfügen.

+0

sorry, aber ich kann nw im Vollbildmodus auf diese Weise nicht zeigen ... es ist die gleich. – elp