2010-10-04 13 views
6

के बाद मैं आवेदन काम कर रहा हूँ, जिसमें मैं presentModalViewController बुला और एक बार समाप्त (dismissModalViewControllerAnimated:YES बुला) इसे तुरंत popToRootViewControllerAnimated फोन करना चाहिए।popToRootViewControllerAnimated कॉलिंग dismissModalViewControllerAnimated

लेकिन मुद्दा dismissModalViewControllerAnimated:YES ठीक से काम कर रहा है लेकिन popToRootViewControllerAnimated इसके बाद काम नहीं कर रहा है।

कोड नीचे दिखाया गया है:

[self.navigationController dismissModalViewControllerAnimated:YES] ; 
[self.navigationController popToRootViewControllerAnimated:YES]; 

उत्तर

6

कुछ इस तरह का प्रयास करें:

[self.navigationController dismissModalViewControllerAnimated:YES] ; 
[self performSelector:@selector(patchSelector) withObject:nil afterDelay:0.3]; 


-(void)patchSelector{ 
    [self.navigationController popToRootViewControllerAnimated:YES]; 
} 

यह बहुत साफ नहीं है लेकिन यह काम करना चाहिए।

अद्यतन: आप का उपयोग करना चाहिए

[self dismissModalViewControllerAnimated:YES]; 

बजाय

[self.navigationController dismissModalViewControllerAnimated:YES] ; 

उद्देश्य यह है कि मॉडल प्रस्तुत कर रहा है दृश्य नियंत्रक, नहीं नेविगेशन नियंत्रक है।

+0

धन्यवाद जॉर्ज। यह मेरे लिए काम कर रहा है। आपके सुझाव के लिए –

0

मुझे लगता है, आप

[self.navigationController popToRootViewControllerAnimated:YES]; 
लक्ष्य मोडल ViewController में

बुला नहीं कर रहे हैं। जांच करे।

+0

धन्यवाद कृष्णन –

2

आप UIViewControllers के ढेर के साथ एक नेविगेशन नियंत्रक है:

[self dismissModalViewControllerAnimated:YES]; 
[(UINavigationController*)self.parentViewController popToRootViewControllerAnimated:YES]; 
//UIViewController *vc = [[UIViewController new] autorelease]; 
//[(UINavigationController*)self.parentViewController pushViewController:vc animated:YES]; 

मानता है, उस दृश्य नियंत्रक जिसमें मोडल दृश्य नियंत्रक कहा जाता navigationController है।

0

मैं इस तरह के कुछ में भाग गया। आपको पहले अपने self.navigationcontroller की प्रतिलिपि बनाना होगा और स्वयं को बनाए रखना होगा, इसलिए जब आप दूसरे पॉप को कॉल करते हैं, तब भी एनसी का संदर्भ होता है और आप अभी भी मौजूद हैं।

// locally store the navigation controller since 
    // self.navigationController will be nil once we are popped 
UINavigationController *navController = self.navigationController; 

    // retain ourselves so that the controller will still exist once it's popped off 
[[self retain] autorelease]; 

    // Pop this controller and replace with another 
[navController popViewControllerAnimated:NO]; 
[navController pushViewController:someViewController animated:NO]; 

देखें: How can I pop a view from a UINavigationController and replace it with another in one operation?

संबंधित मुद्दे