2014-10-06 7 views
11

मैं हार्डकोडेड लेआउट से एक्सकोड 6 में उपलब्ध नई सार्वभौमिक स्टोरीबोर्ड सिस्टम में जाने की प्रक्रिया में हूं। ऑटो स्टोरी के जादू के माध्यम से, एक स्टोरीबोर्ड बनाने में सक्षम होना बहुत अच्छा है, दोनों पर काम करेगा आईफोन और आईपैड। और मेरी समझ यह है कि सार्वभौमिक स्टोरीबोर्ड पीछे की ओर हैं- आईओएस 7 के साथ संगत।आईओएस 7 पर सार्वभौमिक स्टोरीबोर्ड के साथ मैं पॉपओवर सेग्स का उपयोग कैसे करूं?

हालांकि, मैं पॉपओवर सेग का उपयोग कर समस्या में भाग रहा हूं। आईओएस 8 पर, नया 'पॉपओवर' के रूप में प्रस्तुत करें, आईपैड इंटरफ़ेस पर पॉपओवर के रूप में प्रदर्शित होगा और एक आईफोन इंटरफेस पर एक मोडल व्यू कंट्रोलर के रूप में प्रदर्शित होगा। यह वही व्यवहार है जो मैं चाहता हूं, लेकिन जब मैं आईओएस 7 पर अपना सार्वभौमिक स्टोरीबोर्ड चलाता हूं, तो जब भी मैं पॉपओवर सेग्यू का प्रयास करता हूं तो ऐप क्रैश हो जाता है। यहाँ त्रुटि संदेश मैं प्राप्त होते हैं:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 
'-[UIPopoverController initWithContentViewController:] called when not 
running under UIUserInterfaceIdiomPad.' 

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

  • UIStoryboardSegue का एक उपवर्ग कि आईपैड पर एक पॉपओवर और iPhone पर एक मॉडल दृश्य दिखाई देगा बनाएँ:

    यह इन की तरह दिखता है मेरी पसंद कर रहे हैं। इसके लिए मेरे ऐप में सभी पॉपओवर सेग्स की कक्षा को मैन्युअल रूप से बदलना आवश्यक है।

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

कोई भी महान विकल्प हैं, तो मैं सोच रहा था: मैं किसी भी अन्य विकल्प हैं? क्या मुझे अपने प्रस्तावित समाधानों में कोई समस्या है?

+1

मुझे एक ही समस्या है। फिलहाल मैं कस्टम सेगु मार्ग ले रहा हूं क्योंकि मुझे लगता है कि यह कम से कम परेशान है, लेकिन मैं इसके बारे में बहुत खुश नहीं हूं। –

उत्तर

-1

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

-(IBAction)btnClicked:(id)sender{ 
    if([[UIDevice currentDevice] userInterfaceIdiom]==UIUserInterfaceIdiomPad){ 
     //your popover code.. 
    }else{ 
     //your present modaly code... 
    } 
} 
1

एक्सकोड 6 एकीकृत स्टोरीबोर्ड का समर्थन करता है। एक स्टोरीबोर्ड दृश्य वर्ग पर आधारित दृश्य वर्ग के आधार पर दृश्य और लेआउट बाधाओं को जोड़ या हटा सकता है। दो अलग (लेकिन समान) स्टोरीबोर्ड बनाए रखने के बजाय, आप एकाधिक आकार वर्गों के लिए एक स्टोरीबोर्ड बना सकते हैं।

लेकिन आकार कक्षाएं UITraitCollection पर आधारित हैं जो आईओएस 8 पर समर्थित है। यही कारण है कि यह आईओएस 7 पर दुर्घटनाग्रस्त हो रहा है।

+1

यह टिप्पणी में होना चाहिए क्योंकि आप प्रश्न का उत्तर नहीं दे रहे हैं, –

0

मैंने एक मोडल सेग्यू बनाने और कोड में जांच करने के लिए यह जांचने के लिए समाप्त किया कि यह आईओएस 7 के साथ आईफोन पर है या नहीं। फिर मैं performWithSegue का उपयोग करता हूं कि कौन सी सेग्यू लेनी चाहिए। आईओएस 8 पॉपओवर कोड को संभाल सकता है लेकिन आईओएस 7 में समस्याएं हैं।

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