2010-12-11 11 views
8

में एम्बेडेड मैं अपने UINavigationController रों topbar में कहीं एक UISegmentedControl एम्बेड करना चाहते हैं।UISegmentedControl एक UINavigationBar/आइटम

UIBarButtonItem में इसे एम्बेड करने में कोई समस्या नहीं है और इसे बाएं या दाएं बार बटन बटन के रूप में सेट करना कोई समस्या नहीं है।

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

के केंद्र में मैं अपने पॉपओवर सामग्री को लपेटने के बारे में कैसे जाउंगा।

आशा है कि कोई मेरी मदद कर सकता है :) अग्रिम धन्यवाद।

उत्तर

21

आपको पॉपओवर शीर्षक पट्टी में नियंत्रण क्यों रखना होगा? आईपैड में नीचे दिए गए दृश्य में डालने पर विचार करने के लिए बहुत अधिक स्क्रीन रीयल एस्टेट है।

- EDIT -

मैंने इसे स्वयं करने की कोशिश की और यह काम करता है।

- (IBAction) showPopover: (id) sender 
{ 
    TestController *testController = [[TestController alloc] initWithStyle: UITableViewStylePlain]; 
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: testController]; 
    UIPopoverController *controller = [[UIPopoverController alloc] initWithContentViewController: navController]; 
    [controller presentPopoverFromBarButtonItem: sender permittedArrowDirections: UIPopoverArrowDirectionAny animated: YES]; 
    controller.delegate = self; 
    [testController release]; 
    [navController release]; 
} 

यहाँ है TestController के कार्यान्वयन:

- (id) initWithStyle: (UITableViewStyle) style 
{ 
    if ((self = [super initWithStyle: style])) { 
     UISegmentedControl *ctrl = [[UISegmentedControl alloc] initWithFrame: CGRectZero]; 
     ctrl.segmentedControlStyle = UISegmentedControlStyleBar; 
     [ctrl insertSegmentWithTitle: @"One" atIndex: 0 animated: NO]; 
     [ctrl insertSegmentWithTitle: @"Two" atIndex: 0 animated: NO]; 
     [ctrl insertSegmentWithTitle: @"Three" atIndex: 0 animated: NO]; 
     [ctrl sizeToFit]; 
     // Any of the following produces the expected result: 
     self.navigationItem.titleView = ctrl; 
     //self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView: ctrl] autorelease]; 
     [ctrl release]; 
    } 
    return self; 
} 

यहाँ है परिणाम:

alt text alt text

कोई कर रहे हैं यहाँ कोड पॉपओवर नियंत्रक की स्थापना है खंडित नियंत्रण में sizeToFit भेजकर मेरे कोड में चालें। क्या यह आपके लिए काम करता है?

+0

हाय, यह प्रासंगिक रूप से बार में है और सामग्री में नहीं है। जैसे ही ऐप्पल ने चयनित ईमेल के अंदर मेल ऐप में "अगला संदेश, ऊपर/नीचे तीर" सेगमेंट कंट्रोल डाला था, तो इसका कोई मतलब नहीं होगा। या यदि सूची में सॉर्ट करने के लिए सेगमेंट कंट्रोलर सूची में रखा गया था। – RickiG

+0

मैं देखता हूं। मैंने अपना जवाब वर्किंग कोड और स्क्रीन शॉट्स के साथ संपादित किया है। आशा है कि ये आपकी मदद करेगा। – Costique

+0

धन्यवाद :) यह बहुत अच्छा है, यह आकार के लिए कॉल करने के लिए कॉल है जो सभी अंतर बनाता है। फिर से धन्यवाद। – RickiG

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