2009-06-24 17 views
13

मुझे अपने आईफोन एप्लिकेशन में UINavigationController जोड़ने के साथ एक अजीब समस्या है।आईफोन: UINavigationController के शीर्ष पर अजीब स्थान

myViewController *viewController = [[myViewController alloc] initWithNibName:@"myView" bundle:nil]; 

myNavigationViewController *navigationController = [[myNavigationViewController alloc] initWithRootViewController:viewController]; 

UIView *finalView = myeNavigationViewController.view; 

[self.view addSubview:finalView]; 

सभी को छोड़कर मैं स्थिति पट्टी और UINavigationController शीर्षक पट्टी के बीच मेरे विचार के शीर्ष पर एक अजीब सफेद स्थान मिल योजना के अनुसार काम करने के लिए लगता है: मैं इस प्रकार नियंत्रक जोड़ें। alt text http://www.andrewskinner.name/problem.png

मैंने ऑनलाइन खोज की है लेकिन वास्तव में नहीं पता कि क्या खोजना है। क्या किसी अन्य व्यक्ति को यह समस्या है? क्या आप मुझे कुछ मदद की दिशा में इंगित कर सकते हैं?

अग्रिम धन्यवाद।

उत्तर

0

हो सकता है कि आप किसी भी तरह से अपने आप को दो UIViews, प्रत्येक स्टेटस बार के साथ प्राप्त कर चुके हैं। Xib जांचें।

11

लाइन

UIView *finalView = myeNavigationViewController.view; 

कोड के लिए क्या जोड़ता है? के रूप में आप एक UIView करने के लिए यह पहली बताए सीधे दृश्य जोड़ सकते हैं यह अनावश्यक है - साथ ही इसकी गलत है यह संदर्भ के रूप में myNavigationController और नहीं navigationController ..
मैं सीमा के फ्रेम की स्थापना इस

myViewController *viewController = [[myViewController alloc] initWithNibName:@"myView" bundle:nil];  
myNavigationViewController *navigationController = [[myNavigationViewController alloc] initWithRootViewController:viewController]; 
[navigationController.view setFrame: [self.view bounds]]; 
navigationController.delegate = self; 
[self.view addSubview:[navigationController view]]; 

करते जिस शीर्ष पर आप पूछ रहे थे उस पर सफेद स्थान को भी हटा दें।

2

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

mySubClass_NavigationController*nav=[[mySubClass_NavigationController alloc] initWithRootViewController:viewController ]; 

[myUIWindow addSubview:nav.view]; 

और mySubClass_NavigationController अंदर, आप सभी अनुकूलन है कि आप अपने स्वयं में अब कर रहे हैं (जो कि नियंत्रक है) कर सकते हैं:

मेरे सुझाव UINavigationController का एक उपवर्ग के रूप में कस्टम दृश्य बनाने के लिए है ।

2

मैंने ओप के बहुत ही समान कोड का उपयोग करके थोड़ी देर के लिए संघर्ष किया और मेरे नेविगेशन नियंत्रक के ऊपर एक सफेद बार भी था।

यूआईटीएब कंट्रोलर में एक दृश्य के रूप में UINavigationController जोड़ने के दौरान मेरी समस्या आई। मेरे मामले में जगह UINavigationController के UINavigationBar भाग के कारण स्टेटस बार को ध्यान में रखकर हुई थी और यह वास्तव में उस दृश्य का हिस्सा ओवरलैप कर रहा था जिसे मैं UINavigationController में दिखाने की कोशिश कर रहा था।

यह वह कोड है जो मैंने अपने UITabBarController व्यू नियंत्रकों में से एक में loadView में समाप्त किया है।

SomeUITableViewController *screenList = [[SomeUITableViewController alloc] init]; 

UINavigationController *navController = [[UINavigationController alloc] 
             initWithRootViewController:screenList]; 

CGRect frame = [[navController navigationBar] frame]; 

frame.origin.y = 0; // Was 20, set to 0 to not take into account the status bar. 

[[navController navigationBar] setFrame:frame]; 

[self setView:[navController view]]; 

http://discussions.apple.com/message.jspa?messageID=7890362 पर कुछ और जानकारी है।

1

आईबी में "अस्पष्ट नीचे बार" पर एक अस्पष्ट संपत्ति है। बस इसे जांचें। यह मेरे लिए समस्या हल हो गई।

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