2013-05-27 12 views
6

से विंडो की तत्व दृश्यता बदलना मैं एक बहुत ही सरल ऐप बनाने की कोशिश कर रहा हूं। यह सिर्फ 3 पृष्ठों के साथ एक सुपर सरल वेब ब्राउज़र है। 3 वेबव्यू, 2 हर समय छिपा हुआ है।एक उपclassed WebView

मैंने ध्यान केंद्रित करते समय कीस्ट्रोक घटनाओं को पकड़ने में सक्षम होने के लिए वेबव्यू को उप-वर्गीकृत किया। यह हिस्सा काम करता है।

अब मुझे सीएमडी + 1, सीएमडी + 2, सीएमडी + 3 (1 पहला वेबव्यू दिखाएगा, 2 अन्य छुपाएं, आदि) दबाए जाने पर मुझे होमबैक की दृश्यता बदलनी होगी और अन्य वेब दृश्यों की दृश्यता बदलनी होगी।

मैंने अपने लक्ष्य को प्राप्त करने के लिए प्रतिनिधियों का उपयोग करने के बारे में सोचने की कोशिश की, लेकिन ज्ञान की कमी मुझे इस सरल ऐप को खत्म करने से रोक रही है।

मैंने एनएसएनोटिफिकेशन के बारे में भी सुना, मेरा वेबव्यू एक अधिसूचना भेज सकता था कि मेरी खिड़की अपने बच्चों की दृश्यता को पकड़ और बदल सकती है लेकिन मुझे यकीन नहीं है कि इसे कैसे प्राप्त किया जाए।

कोई भी मुझे सही दिशा में इंगित कर सकता है?

टीएलडीआर; जब कोई वेबव्यू उदाहरण के लिए सीएमडी + 1 पकड़ता है, तो मैं उन्हें छिपाने के लिए अन्य वेब दृश्यों में एक विधि को कॉल करने में सक्षम होना चाहता हूं।

धन्यवाद और आपका दिन शुभ हो!

+0

क्षमा करें, लेकिन आपका प्रश्न/समस्या पर्याप्त विशिष्ट नहीं है। आप मूल रूप से पूछ रहे हैं कि कैसे दिखाना है या एक दृश्य छुपाएं? सही दिशा एपकिट के बारे में कुछ पढ़ना होगा। https://developer.apple.com/library/mac/navigation/#section=Resource%20Types&topic=Getting%20 स्टार्ट –

+0

जब कोई वेबव्यू उदाहरण के लिए सीएमडी + 1 पकड़ता है, तो मैं दूसरे में एक विधि कॉल करने में सक्षम होना चाहता हूं उन्हें छुपाने के लिए WebViews। यह विशेष रूप से मैं क्या करना चाहता हूं। बहुत अस्पष्ट होने के लिए खेद है और जवाब देने के लिए धन्यवाद! – TomShreds

उत्तर

1

अधिसूचना का उपयोग करना: कहें कि आप कुंजी स्ट्रोक को पकड़ते हैं, जहां आपके पास वांछित वेबव्यू (उदाहरण के लिए @"1" या @"2" आदि) की पहचान करने के लिए कुछ आईडी युक्त एनएसएसटींग ऑब्जेक्ट है, और प्रत्येक वेब व्यू में viewID प्रॉपर्टी है। तो जहां कुंजी स्ट्रोक मिल जाए, तो आप जोड़ेंगे: फिर

[[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(switchViewNotification:) 
    name:@"ChangeMyActiveWebView" 
    object:nil // Means any object 
]; 

:

[[NSNotificationCenter defaultCenter] 
    postNotificationName:@"ChangeMyActiveWebView" 
    object:newViewID // <- contains string to identify the desired web view 
]; 

कहीं जहां अपने वेब दृश्य (उदाहरण के -awakeFromNib या -init के लिए) आरंभ नहीं हो जाता, तो आप इस कोड को जोड़ने लागू -switchViewNotification: विधि:

- (void)switchViewNotification:(NSNotification *)aNotification { 

    NSString *newViewID=[aNotification object]; 

    if([self.viewID isEqualToString:newViewID]) 
    { 
     // show this web view 
    } 
    else 
    { 
     // hide this web view 
    } 
} 

अंतिम टुकड़ा: आप पर्यवेक्षक को दूर जब वेब दृश्य गायब हो जाता है, तो आपके -dealloc विधि को यह जोड़ने की जरूरत:

[[NSNotificationCenter defaultCenter]removeObserver:self]; 

ऐसा करना चाहिए।

0

अगर मैं आपके सवाल का सही ढंग से समझ में आ मुझे लगता है कि एप्लिकेशन भर में छोटे राज्यों को बचाने के लिए आप NSUserDefaults का उपयोग कर सकते हैं, यहाँ, एक Example

मुझे आशा है कि मैं मदद की है लक :) के सर्वश्रेष्ठ

+0

ओह मुझे लगता है कि मैंने वास्तव में गलत तरीके से मेरे प्रश्न को समझाया। जब वेबव्यू उदाहरण के लिए सीएमडी + 1 पकड़ता है, तो मैं उन्हें छिपाने के लिए अन्य वेब दृश्यों में एक विधि को कॉल करने में सक्षम होना चाहता हूं। एक तरह से, मैं जो कुछ आपने मुझे बताया उसके साथ ऐसा करने में सक्षम हो सकता था। मैं कुछ कोशिश करूंगा: पी उत्तर के लिए धन्यवाद! – TomShreds