2011-11-06 7 views
5

मैं [[self navigationController] popViewControllerAnimated:YES] पर कॉल करने की कोशिश कर रहा हूं लेकिन एनीमेशन स्लाइड को बाएं से दाएं के बजाय दाएं से बाएं बनाना चाहता हूं। ऐसा करने का कोई आसान तरीका? मैं पिछले दृश्य पर वापस जाना चाहता हूं। किसी भी मदद की सराहना की है। धन्यवाद!UINavigationController: विपरीत दिशा में पॉप व्यू कंट्रोलर

उत्तर

8

यह संभव है, मैंने निम्नलिखित कोड को देखा है, जिसे मैंने थोड़ी देर पहले इस्तेमाल किया था और इसे अपने लिए काम करने की कोशिश की थी।

typedef enum { 
    UIViewAnimationTransitionNone, 
    UIViewAnimationTransitionFlipFromLeft, 
    UIViewAnimationTransitionFlipFromRight, 
    UIViewAnimationTransitionCurlUp, 
    UIViewAnimationTransitionCurlDown, 
} UIViewAnimationTransition; 

तो आपके मामले में आप चाहेंगे: यू ही बदलने के लिए setAnimationTransition

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDuration:0.75]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO]; 
[UIView commitAnimations]; 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDelay:0.375]; 
[self.navigationController popViewControllerAnimated:NO]; 
[UIView commitAnimations]; 

उपयोग करने के लिए डिफ़ॉल्ट एनिमेशन के कुछ अलग तरह के होते हैं की जरूरत है, सेब साइट एनिमेशन के इस प्रकार संभव हो रहे हैं का कहना है निम्नलिखित का उपयोग करने के लिए:

[UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0.75]; 
    [self.navigationController popViewControllerAnimated:NO]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; 
    [UIView commitAnimations]; 
+0

धन्यवाद। क्या इसे स्लाइड करने का कोई तरीका है जैसे कि आप 'pushViewController' को कॉल कर रहे थे? – Mason

+0

हाँ जैसे मैंने कहा, आपको केवल लाइन को बदलने की जरूरत है: [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView: self.navigationController.view कैश: नहीं]; – Wesley

+0

मैं इसे समझता हूं। हालांकि मुझे सही संक्रमण नहीं मिल रहा है। – Mason

16

इस प्रकार कोई व्यक्ति विपरीत दिशा में नियंत्रक को पॉप कर सकता है। यह मेरे लिए 100%

CATransition *transition = [CATransition animation]; 
    transition.duration = 0.45; 
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]; 
    transition.type = kCATransitionFromRight; 
    [transition setType:kCATransitionPush]; 
    transition.subtype = kCATransitionFromRight; 
    [self.navigationController.view.layer addAnimation:transition forKey:nil]; 
    [self.navigationController popViewControllerAnimated:NO]; 
+0

यह वही है जो मैं देख रहा था !! धन्यवाद। – iChirag

+2

आप इस प्रकार को दो बार सेट करते हैं? 'transition.type = kCatransitionPush' पर्याप्त होना चाहिए। –