Die Ausnahme in der iPhone-app : Modal Umstellung ist bereits im Gange

Habe ich, was ich glaube, ist eine ziemlich einfache Anwendung im moment, basierend auf ein paar tutorials zusammen gebastelt. Ich bin mit XCode 3.2.3 in OSX 10.6.4. Es begann als ein standard-iPhone "Window-Based Application". Mit interface-builder-ich habe eine Tab Bar Controller mit dem O ' Reilly-video-tutorial hier:

http://broadcast.oreilly.com/2009/06/tab-bars-and-navigation-bars-t.html

Im ersten Tab habe ich ein standard-UIView mit zwei Tasten. Beide rufen die gleiche Funktion für die Anzeige einer UIImagePickerController:

-(IBAction) btnPhotoClicked:(id)sender {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
if((UIButton *)sender == btnChoosePhoto)
{
    imagePicker.allowsEditing = YES;
    imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
} else {
    imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
}

[self presentModalViewController:imagePicker animated:YES];
[imagePicker release];
}

Mir läuft der code, der in einem emulator, so dass immer nur klicken Sie auf die Schaltfläche mit der Bezeichnung Wählen Sie "Foto". Wenn der Dialog erscheint mit einem Foto gewählt, diese Funktion läuft:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary  *)info {
NSURL *mediaUrl;

mediaUrl = (NSURL *)[info valueForKey:UIImagePickerControllerMediaURL];

if (mediaUrl == nil)
{
    imagePuzzle = (UIImage *) [info valueForKey:UIImagePickerControllerEditedImage];
    if(imagePuzzle == nil)
    {
        //--- Original Image was selected ---
        imagePuzzle = (UIImage *) [info valueForKey:UIImagePickerControllerOriginalImage];
    }
    else {
        //--- Get the edited image ---
        //--- If it was successful the above valueForKey:UIImagePickerControllerEditedImage
        //--- would have assigned it already.
    }
}
else {
    //--- Muppet selected a video
}

//Animate the picker window going away
[picker dismissModalViewControllerAnimated:YES];
ImageViewController *imageViewController = [[ImageViewController alloc] init];
imageViewController.delegate = self;    
[self presentModalViewController:imageViewController animated:YES];
[imageViewController release];
}

Dies ist, wo mein problem liegt. Ich habe versucht viele verschiedene hacks und Iterationen, aber der obige code ist die einfachste, um das problem. Wenn die imageViewController ist die Darstellung als modales Dialog die folgende Ausnahme ausgelöst:

2010-07-09 15:29:29.667 Golovomka[15183:207] *** Terminating app due to uncaught
exception 'NSInternalInconsistencyException', reason: 'Attempting to begin a modal
transition from <NewViewController: 0x5915f80> to <ImageViewController: 0x594a350>     
while a transition is already in progress. Wait for viewDidAppear/viewDidDisappear
to know the current transition has completed'

Wie kann ich die Heilung dieser? Ich habe versucht, Verzögerungen und anderen tricks, aber nicht wirklich verstehen, wie soll ich verwenden viewDidAppear oder viewDidDisappear, um mir zu helfen. Bemerkenswert ist auch, dass eine sehr einfache Anwendung mit einem Blick laden die picker dann die Anzeige einer anderen Ansicht mit dem Bild in nicht zu dem Fehler. Jede Hilfe dankbar angenommen.

InformationsquelleAutor Diziet | 2010-07-09
Schreibe einen Kommentar