2011-01-31 7 views
6

मैं आईओएस पृष्ठभूमि से आ रहा हूं और मैक ओएसएक्स (कोको ऐप) विकास में नया हूं।मैक ऐप्स (आईओएस के समान) में "कंट्रोलर देखें" की आसान स्विचिंग

आधार के रूप में सेब नमूना कोड प्रोजेक्ट "Simple Cocoa App" से शुरू करना, मैं अलग-अलग "व्यू कंट्रोलर" या यहां तक ​​कि केवल आईएसओ ऐप्स के समान एनएसवीव्स के बीच स्विच करने में सक्षम होना चाहता हूं।

दुर्भाग्यवश, मुझे इसे पूरा करने का कोई तरीका नहीं मिल सका - और इंटरनेट को "कोको ऐप्स में स्विचिंग देखें, मैक ऐप्स में मैक ऐप देव ट्यूटोरियल में स्विचिंग" जैसे कीवर्ड से जुड़े संसाधनों में कमी है ...

आप में से किसी एक ट्यूटोरियल है कि जानते हैं, और यहाँ किकर है, वास्तव में विचारों के बीच स्विच करने की बात को शामिल किया गया? या शायद किसी भी त्वरित तरीके से पता है कि आप अपने स्टैक ओवरफ़्लो उत्तर में समझा सकते हैं? संकल्पना
एक बहुत ही सरल-का-प्रमाण अवधारणा के

सबूत निम्नलिखित हो सकता है। एक साधारण ऐप में, दो दृश्य हैं - स्क्रीन 1 (वर्तमान में प्रदर्शित) और स्क्रीन 2 (स्क्रीन से छिपी हुई):

चरण 1) प्रारंभ ऐप, स्क्रीन 1 दिखाई देता है (लेबल "स्क्रीन 1" और बटन "अगला अगला ")
कदम 2) प्रेस बटन
कदम 3) स्क्रीन गुप्त 1 स्लाइड के रूप में
चरण 4) स्क्रीन में 2 स्लाइड्स (एक लेबल शामिल हैं" स्क्रीन 2 ")

धन्यवाद।

उत्तर

16

कोर एनीमेशन ओएस एक्स में गहराई से एकीकृत नहीं है क्योंकि यह आईओएस पर है। इसलिए आपको बहुत कुछ करने की आवश्यकता होगी। आप क्या कर सकते हैं विंडो की सामग्री का उपयोग पर्यवेक्षण के रूप में देखें और फिर किसी अन्य दृश्य (एनिमेटेड) पर स्विच करने के लिए निम्न कार्य करें।

- (void)switchSubViews:(NSView *)newSubview 
{ 
    NSView *mainView = [[self window] contentView]; 
    // use a for loop if you want it to run on older OS's 
    [mainView removeAllSubViews]; 

    // fade out 
    [[mainView animator] setAplhaValue:0.0f]; 

    // make the sub view the same size as our super view 
    [newSubView setFrame:[mainView bounds]]; 
    // *push* our new sub view 
    [mainView addSubView:newSubView]; 

    // fade in 
    [[mainView animator] setAlphaValue:1.0f]; 
} 

यह आपको वांछित प्रभाव नहीं देगा। यदि आप चाहते हैं कि यह एक sorta कदम प्रभावी बनाने के लिए आप QuartzCore.framework शामिल करके निम्न क्या करना है:

- (void)prepareViews 
{ // this method will make sure we can animate in the switchSubViewsMethod 
    CATransition *transition = [CATransition animation]; 
    [transition setType:kCATransitionPush]; 
    [transition setSubtype:kCATransitionFromLeft]; 
    NSView *mainView = [[self window] contentView]; 
    [mainView setAnimations:[NSDictionary dictionaryWithObject:transition forKey:@"subviews"]]; 
    [mainView setWantsLayer:YES]; 
} 
तो switchSubViews में

: यदि आप केवल उपयोग करने के लिए:

[[mainView animator] addSubView:newSubView]; 
+0

जब मैं उपरोक्त कोड का उपयोग करता हूं, "[mainView removeAllSubViews]" पंक्ति पर, "यह निम्न त्रुटि दिखाता है ..." NSView 'के लिए कोई दृश्य @interface' चयनकर्ता 'removeAllSubViews' घोषित करता है "। – nbs

+0

@NidhinBalakrishnan का कारण क्या है कि विधि काफी नई एपीआई है, जैसा कि मैंने उस पंक्ति पर टिप्पणी में कहा है, वांछित प्रभाव प्राप्त करने के लिए आपको सभी सबव्यूज़ (सबव्यू की सरणी के माध्यम से लूप और एक-एक करके हटाएं) को मैन्युअल रूप से हटा देना होगा । –

3

आप Perspx द्वारा PXNavigationBar जांचना चाह सकते हैं, यह आपकी स्थिति को और अधिक आईओएस में संभाल सकता है।

+0

इस सहायक लिंक के लिए धन्यवाद sidyll। – m0rtimer

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