2012-04-11 5 views
2

У меня есть проблема с вызовом функции:Отклонить ModalViewController от подвида

[self dismissModalViewControllerAnimated:YES]; 

В MainViewController, я могу запустить сборщик изображений и увольняю, как обычно, нажав кнопку отмены.

(IBAction) LaunchInMain:(id)sender{ 

    MainAppDelegate *app = (MainAppDelegate *)[[UIApplication sharedApplication] delegate]; 

    //elcPicker is a customized image picker 
    [app.viewController presentModalViewController:elcPicker animated:YES]; 
    [elcPicker release]; 
    [albumController release]; 

- (void)elcImagePickerControllerDidCancel:(ELCImagePickerController *)picker { 
    [self dismissModalViewControllerAnimated:YES]; 
} 

Теперь, вместо того, чтобы запускать его направить его в Main, добавить подвид первый и запуск сборщика изображений из подвида, используя тот же метод запуска.

Проблема:

Початкоотделитель изображение не может быть уволен и подтаблицы не может быть показан еще раз. Таким образом, экран останется на панели выбора изображений независимо от того, что я нажимаю.

Я пытался с некоторыми другими вызовами, как без какого-либо успеха:

[self dismissModalViewControllerAnimated:YES]; 

Я доволен любой помощи или идеи. Если вы считаете, что необходимо предоставить дополнительную информацию, я могу добавить больше кодов.

+1

Вы уверены, что это ваш elcPicker? просто попробуйте [elcPicker rejectModalViewControllerAnimated: YES]; –

ответ

3

Может быть попробовать

[app.viewController dismissModalViewControllerAnimated:YES];

Надеется, что это помогает.

+0

Да, мое обходное решение очень похоже на то, что вы предлагаете. В принципе, я просто тот же контроллер, чтобы его отклонить.Спасибо – LKS

+0

+1 за хороший ответ:] –

2

Это может работать для вас:

[self.view dismissModalViewControllerAnimated:YES]; 
0

Это работает, если вы представляете вид модальный из UISplitViewController. Он также может быть применен и во многих других отношениях ...

Во-первых, создать экземпляр в вашем .h файл для вашего AppDelegate (AppDelegate_iPad *appDelegate), то это в вашем viewDidLoad или сопоставимый метод:

ipadDelegate = (AppDelegate_iPad *)[[UIApplication sharedApplication] delegate]; 

Теперь представляем первый взгляд модальный так:

YOURVC *vc = [[YOURVC alloc] initWithNibName:@"YOURVC" bundle:nil]; 
    [ipadDelegate.splitViewController presentModalViewController:vc animated:YES]; 
    [vc release]; 

Скажем, у вас есть подвид, как UITableView, и хотят, чтобы закрыть модальное от didSelectRowAtIndexPath. Все, что вам нужно сделать, чтобы отпустить модальность с подвид это создать еще один экземпляр ipadDelegate внутри .h вашего подвид (если необходимо), ссылки на [[] делегат UIApplication sharedApplication] снова, и увольняет:

[ipadAppDelegate.splitViewController dismissModalViewControllerAnimated:YES]; 

По существу, как можно дольше, используйте контроллер appDelegate для представления и отклонения модальности, если вам нужно поддерживать постоянную ссылку на presentingViewController ... потому что все выше сказанное просто не работает в моем случае.

Если вы представляете свой ipadDelegate, убедитесь, что вы проверили режим презентации в вашем MainWindow_iPad.xib. Ваш «Стиль перехода» должен быть «Cover Vertical», а «Presentation» должен быть «Current Context», или ваш модальный может присутствовать за другими видами.

Смежные вопросы