2016-01-03 11 views
5

में वर्तमान UIViewController को कैसे ढूंढें I Xamarin Forms C# example के साथ Facebook Auth SDK का उपयोग कर रहा हूं। हालांकि, फेसबुक एसडीके ने इस विधि को कम कर दिया है और इसे एक के साथ बदल दिया है जो fromViewController परिवर्तकों को कन्स्ट्रक्टर में जोड़ता है। मैं Xamarin में ViewControllers की अवधारणा के साथ विशेष रूप से आरामदायक नहीं हूं, या वास्तव में इस कोड के साथ नमूना से है, तो क्या वर्तमान व्यू कंट्रोलर को गेज करने का कोई तरीका है?Xamarin

मैंने कुछ .NET उदाहरण उदा। NSArray *viewContrlls=[[self navigationController] viewControllers];[viewContrlls lastObject]; हालांकि, यह दृष्टिकोण Xamarin के साथ काम नहीं कर रहा है, क्योंकि self में नेविगेशन नियंत्रकों के लिए परिभाषाएं नहीं हैं।

वैकल्पिक रूप से, नमूना कोड का उपयोग करके, मेरे वर्तमान व्यू कंट्रोलर को किस प्रकार परिवर्तनीय किया गया है, आसानी से काम करने का कोई तरीका है?

उत्तर

7

ऐसा करने का सबसे अच्छा तरीका व्यू कंट्रोलर के संदर्भ में पास करना है जो ऑथ विधि को कॉल कर रहा है।

हालांकि, अगर आप भी (Xamarin Forums पर AdamKemp के सौजन्य से)

var window= UIApplication.SharedApplication.KeyWindow; 
var vc = window.RootViewController; 
while (vc.PresentedViewController != null) 
{ 
    vc = vc.PresentedViewController; 
} 
+0

धन्यवाद - मैं इसे आजमाउंगा! यहां थोड़ा सा है जिसने मुझे थोड़ा सा भ्रमित कर दिया है। नमूना में, आप 'loginPage()' देखते हैं जिसमें अभी एक बटन है, लेकिन फेसबुक बटन एक खाली वर्ग है, जिसमें आईओएस प्रोजेक्ट में 'फेसबुकबटनरेंडरर सीएस' में कुछ परिभाषाएं हैं, जो मेरे पॉपअप के दौरान कौन सा व्यू कंट्रोलर सक्रिय है फेसबुक लॉगिन स्क्रीन। –

6

इस तरीके का प्रयास कर सकते हैं स्वीकार किए जाते हैं जवाब नहीं होगा आप वर्तमान दृश्य नियंत्रक देना यदि एक माता पिता UINavigationController के ढेर में है यह , इसलिए मैं निम्नलिखित के साथ आया:

var window = UIApplication.SharedApplication.KeyWindow; 
var vc = window.RootViewController; 
while (vc.PresentedViewController != null) 
    vc = vc.PresentedViewController; 

var navController = vc as UINavigationController; 
if (navController != null) 
    vc = navController.ViewControllers.Last(); 
+1

उपरोक्त, धन्यवाद, यह वही है जो मैं ढूंढ रहा था। मुझे बहुत समय बचाया। –