Friday 15 July 2011

ios - Passing an Action to a View via DismissViewController -


देखें नियंत्रक

  • UIWebView: webView - एक बस UIWebView
  • UIButton: aboutButton - आप के बारे में AboutViewController पर ले जाता है

    AboutViewController

  • IBAction: clickWebsiteButton - के बारे में AboutViewController को ख़ारिज करें, http://websiteURL.com/ में वेबदृश्य (जो कि ViewController के भीतर है)

    के बारे में वीआईयूआई नियंत्रक कोड <पूर्व> // के बारे में व्यू नियंत्रक। #import "ViewController.h" @ वर्ग ViewController; @ इंटरफेस के बारे में वीआईसीआई नियंत्रक: यूआईटीबल वीक नियंत्रक & lt; UIWebViewDelegate & gt; {दृश्य नियंत्रक * दृश्य नियंत्रक; } // AboutViewController.m - (IBAction) पर क्लिक करेंवेबसाइट बटन: (आईडी) प्रेषक {[viewController.webView लोड अनुरोध: [एनएसडब्ल्यूआर अनुरोध अनुरोध के साथ: [एनएसURL URLWithString: @ "http://websiteURL.com/"]]]; [स्व से हटाएंमॉडल विज नियंत्रकअनुमति: हाँ]; }

    प्रश्न

    मैं अंदर http://websiteURL.com/ लोड करने में सक्षम होना चाहता हूँ IBAction के माध्यम से दृश्य को खारिज करने पर UIWebView अब के रूप में, यह सभी दृश्य को खारिज कर देता है लेकिन WebView के भीतर यूआरएल को लोड नहीं करता है। वेबव्यू काम कर रहा है और यूआरएल को ठीक से लोड कर रहा है, मुझे एक अलग दृश्य से इस यूआरएल को लोड करने में परेशानी हो रही है। किसी भी विचार?

    धन्यवाद

    मैंने लगातार डेटा संग्रहण के बारे में उत्तर दिया। यह आपके दृश्य नियंत्रक को डेटा साझा करने का एक अलग तरीका है ताकि आप को अब इसकी ज़रूरत नहीं हो, लेकिन आपको इसकी ज़रूरत नहीं है ... लेकिन

    समस्या ये है कि आप अपने प्रस्तुत दृश्य पर एक विधि कॉल कर रहे हैं नियंत्रक से पहले प्रस्तुत व्यू नियंत्रक को रद्द कर दिया (के बारे में ViewController) खारिज करने की प्रक्रिया पूरी होने के बाद इसे लागू करने की आवश्यकता है।

    यह विधि:

      खारिज करें ModalViewControllerAnimated:   

    IOS6 में पदावनत है, पूरा होने: और iOS5 के बाद आप इस बजाय

      dismissViewControllerAnimated उपयोग करने के लिए प्रोत्साहित किया जाता है   

    जहां पूरा होने एक ब्लॉक तर्क लेता है। ख़त्म होने के पूरा होने के बाद आप पूरा होने वाले ब्लॉक पर स्थित कोड को निष्पादित करेंगे। आप वर्तमान दृश्य नियंत्रक को एक संदेश भेज सकते हैं।

    <कोड> self.presentingViewController ViewController जो aboutViewController प्रस्तुत करने के लिए एक संदर्भ है - यह पेश की प्रक्रिया के हिस्से के रूप में iOS द्वारा प्रदान किया जाता है। लेकिन आप पूरा होने के ब्लॉक के रूप में इसे खारिज की प्रक्रिया के दौरान nulled हो जाता है में उपयोग कर सकते हैं नहीं है, तो आप एक स्थानीय चर के लिए यह पहली कॉपी करने की जरूरत है

    । AboutViewController ... में

      - (IBAction) clickWebsiteButton: (आईडी) प्रेषक {// पूरा करने के लिए स्वयं का उपयोग करने के लिए ViewController ब्लॉक // आप पहले इसे एक स्थानीय चर में प्रतिलिपि करना होगा / जैसा कि इसे ख़ारिज करने की प्रक्रिया UIViewController * presentingVC द्वारा साफ़ किया गया है = Self.presentingViewController; [Self.presentingViewController dismissViewControllerAnimated: हाँ पूरा होने: ^ {अगर ([presentingVC respondsToSelector: @selector (loadRequestWithString :)]) {[presentingVC performSelector: @selector (loadRequestWithString :) withObject: @ "http://websiteURL.com/"] ; }}]; }   

    अपने ViewController पेश में, स्ट्रिंग तर्क स्वीकार करने के लिए एक विधि बनाने:

      - (शून्य) loadRequestWithString: (NSString *) webString {NSURL * RequestURL = [NSURL URLWithString: webstring]; [स्व। वेबव्व लोड लोड करें: [एनएसयूआरआर अनुरोध अनुरोध विथ url: requestURL]]; }    

No comments:

Post a Comment