2012-02-16 4 views
14

के साथ कस्टम सेग्यू का उलटा मेरे पास एक कस्टम सेग्यू एनीमेशन है जो स्टैक पर एक नया व्यू कंट्रोलर दबाते समय होता है। कस्टम कतार के साथ प्रस्तुत किए गए दृश्य नियंत्रक को पॉप-अप करते समय, डिफ़ॉल्ट नेविगेशन नियंत्रक एनीमेशन होता है (यानी, वर्तमान दृश्य नियंत्रक दाईं ओर एनिमेट करता है जबकि मूल दृश्य नियंत्रक बाएं किनारे से ऑन-स्क्रीन का अनुवाद करता है)।स्टोरीबोर्डिंग

तो मेरा सवाल यह है: क्या कस्टम पॉप सेग्यू एनीमेशन लिखने का कोई तरीका है जो स्टैक से व्यू कंट्रोलर पॉप करते समय होता है?

संपादित करें (समाधान):

मैं एक कस्टम चयनित जवाब के लिए इसी तरह segue को परिभाषित करने समाप्त हो गया। स्टोरीबोर्ड में, मैंने बाल दृश्य नियंत्रक से अपने माता-पिता को एक कस्टम सेगू खींच लिया, इसे एक पहचानकर्ता और नए लिखित रिवर्स सेगु को अपनी कक्षा के रूप में दिया। हां, मुझे एहसास है कि यह एक मोडल संक्रमण के समान रूप से समान है। ग्राहक आवश्यकताओं को इस पागलपन की जरुरत है, इसलिए किसी भी टिप्पणी से पहले, समझें कि मुझे पता है कि किसी को सामान्य परिस्थितियों में ऐसा नहीं करना चाहिए।

- (void)perform { 
    UIViewController *src = (UIViewController *)self.sourceViewController; 
    UIViewController *dest = (UIViewController *)self.destinationViewController; 

    [UIView animateWithDuration:0.3 animations:^{ 
    CGRect f = src.view.frame; 
    f.origin.y = f.size.height; 
    src.view.frame = f; 

    } completion:^(BOOL finished){ 
    src.view.alpha = 0; 
    [src.navigationController popViewControllerAnimated:NO]; 
    }]; 
} 
+0

तो स्पष्ट होना, क्या तुम सच में, आप के बजाय एक अलग कस्टम segue का उपयोग कर रहे वापस जाने के लिए कस्टम segue पीछे कर रहे हैं? – sobri

+3

अपने आप को वापस सेग्यू लूपिंग का उपयोग करके, क्या आप अभी भी मूल दृश्य नियंत्रक का अनावश्यक उदाहरण नहीं बना रहे हैं? मुझे लगता है कि मेमोरी प्रोफाइल में एक संक्षिप्त ब्लिप को छोड़कर कोई भी नोटिस नहीं करेगा। :) – qix

उत्तर

19

हां। यहां एक उदाहरण दिया गया है जहां मैं शीर्ष स्तर पर जाता हूं। जब आप स्टोरीबोर्ड में सीगू बनाते हैं। विशेषताएं इंस्पेक्टर में नई नई सीगू क्लास का चयन करें या दर्ज करें।

// 
// FlipTopPop.h 

#import <UIKit/UIKit.h> 


@interface FlipTopPopToRoot : UIStoryboardSegue 

@end 

और

// FlipTopPop.m 

#import "FlipTopPopToRoot.h" 

@implementation FlipTopPopToRoot 

- (void) perform { 

    UIViewController *src = (UIViewController *) self.sourceViewController; 
    [UIView transitionWithView:src.navigationController.view duration:0.5 
        options:UIViewAnimationOptionTransitionFlipFromBottom 
       animations:^{ 
        [src.navigationController popToViewController:[src.navigationController.viewControllers objectAtIndex:0] animated:NO];; 
       } 
        completion:NULL]; 
} 

@end 

आप पॉप अप करने के लिए सिर्फ एक स्तर परिवर्तन इस कस्टम segue का उपयोग करना चाहते हैं:

// PopSegue.h 

#import <UIKit/UIKit.h> 

@interface PopSegue : UIStoryboardSegue 

@end 

और

// PopSegue.m 

#import "PopSegue.h" 

@implementation PopSegue 

- (void) perform { 

    UIViewController *src = (UIViewController *) self.sourceViewController; 
    [src.navigationController popViewControllerAnimated:YES]; 
} 

@end

+0

पॉपसेगु यूआईकिट से अलग होना चाहिए। अच्छा था! – Eric

+0

यह अनावश्यक रूप से एक नया गंतव्य दृश्य नियंत्रक बनाता/हटा देता है। Segue का उपयोग न करना और इसके बजाय दृश्य नियंत्रक को पॉप करना सबसे अच्छा होगा। हां, मैं सहमत हूं - ऐप्पल को पॉप सेग्यू के लिए समर्थन शामिल करना चाहिए। – mdupls

+0

मुझे पॉपटू रूट के लिए समाधान पसंद आया, लेकिन पॉप के लिए सिर्फ एक दृश्य ... ज्यादा नहीं। मैं तो एक छोटे से कुछ जोड़ा जब आप वापस सिर्फ एक एनीमेशन अभी भी मौजूद है जाने की जरूरत है: - (शून्य) प्रदर्शन { UIViewController * src = (UIViewController *) self.sourceViewController; [UIView transitionWithView: src.navigationController.view अवधि: 0.5 विकल्प: UIViewAnimationOptionTransitionCrossDissolve एनिमेशन:^{ [src.navigationController popViewControllerAnimated: NO]; } पूरा करने: NULL]; } – ChavirA

0

टिप्पणीकर्ता लिनस ने बताया कि अन्य समाधान प्रस्तुत किए गए UIViewController का एक और उदाहरण बनाएंगे। मुझे लगता है कि यह लिंक यहां रिवर्स सेग्यू एनीमेशन सक्षम करने के लिए अन्य विकल्पों का वर्णन करता है।

सेट segue पुश करने के लिए है, तो एक धक्का कार्यान्वयन के लिए नीचे दिए गए कोड देखें:

http://robsprogramknowledge.blogspot.com/2012/05/back-segues.html

+1

आलेख एक व्यू कंट्रोलर से अपने मूल दृश्य नियंत्रक को जानकारी पास करने के बारे में बात करता है, एनीमेशन या संक्रमण के बारे में कुछ भी नहीं। – b123400