2012-06-26 24 views
5

मैंने स्क्रीन को टैप करते समय नेविगेशन बार (शीर्ष बार) दिखाई/गायब कर दिया, और पृष्ठभूमि छवि के शीर्ष पर भी रखा। यह काम किया, लेकिन एक समस्या के साथ: मुझे अचानक दो नेविगेशन बार मिल गए हैं! सबसे पहले, "बैक" नामक बैक बटन वाला एक, और जब मैं "बैक" दबाता हूं तो यह "विनीन" नामक बैक बटन के साथ एक नई नेविगेशन बार पॉप अप करता है, जो टेबलव्यू का शीर्षक है, जो इसे वापस ले जाता है। मैं वह रखना चाहता हूं जो मैं रखना चाहता हूं। मुझे लगता है कि यह समस्या DetailViewController.m में या MasterViewController.m में didselectrowatindexpath में कहीं है। उम्मीद है कि कोई समस्या देख सकता है!अनचाहे डबल नेविगेशन बार

DetailViewController.m:

@interface WinesDetailViewController() 

@end 

@implementation WinesDetailViewController 

@synthesize wineDictionary; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
if (self) { 
    // Custom initialization 
} 
return self; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
[super viewDidAppear:animated]; 

} 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view. 

self.navigationController.navigationBar.translucent = YES; 
         self.wantsFullScreenLayout = YES; 

UITapGestureRecognizer *tap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideShowNavigation)] autorelease]; 
                             tap.numberOfTapsRequired = 1; 
                           [self.view addGestureRecognizer:tap]; 
} 

- (void) hideShowNavigation 
{ 
[self.navigationController setNavigationBarHidden:!self.navigationController.navigationBarHidden]; 
} 

- (void)viewDidUnload 
{ 
[super viewDidUnload]; 
// Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

- (BOOL)hidesBottomBarWhenPushed{ 
return TRUE; 
} 


@end 

MasterViewController.m:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    { 
    [tableView deselectRowAtIndexPath:indexPath animated:YES];  

    NSDictionary *dictionary = [wine libraryItemAtIndex:indexPath.row]; 

    if (winesDetailViewController == nil) { 
     // Init the wine detail view 
     winesDetailViewController = [[WinesDetailViewController alloc] init]; 
    } 
    // Here you pass the dictionary 
    winesDetailViewController.wineDictionary = dictionary; 

    [self.navigationController pushViewController:winesDetailViewController animated:YES]; 
    } 
} 
+0

पोस्ट तस्वीर कृपया – Legolas

उत्तर

3

आमतौर पर, आप का वर्णन की तरह एक आवर्ती नेविगेशन पट्टी को एक ही दृश्य नियंत्रक दो बार धक्का की तरह कुछ के कारण होता है। क्या आप यह सुनिश्चित करने के लिए जांच सकते हैं कि आप केवल अपने नेविगेशन स्टैक पर (केवल ब्रेकपॉइंट्स या लॉगिंग के माध्यम से) एक दृश्य नियंत्रक को दबा रहे हैं। क्या यह संभव है कि winesDetailViewController पहले से ही नेविगेशन स्टैक पर है? आप एक संकेत के लिए self.navigationController.viewControllers के मान को लॉग इन करने का भी प्रयास कर सकते हैं।

मैं भी अपने प्रारंभकर्ता को

self.navigationController.navigationBar.translucent = YES; 
viewWillAppear को

और

self.wantsFullScreenLayout = YES; 

चलती है (हालांकि मुझे नहीं लगता कि यह आपकी समस्या का समाधान होगा करते हैं) सुझाव है।

+0

मुझे लगता है कि समस्या है, यह तर्क लगता है। मैं एक टेबलव्यू से कुछ डेटा को एक विस्तृत दृश्य में पास करने का प्रयास करता हूं लेकिन यह मुश्किल है क्योंकि मैं इसके लिए नया हूं। मैंने प्रोटोटाइप सेल से स्टोरीबोर्ड में विस्तार दृश्य देखने के लिए स्टोरीबोर्ड कनेक्शन बनाया है, और मैंने अपने प्रश्न में पोस्ट किए गए didselectrowatindexpath कोड में। यह वें डबल बार को छोड़कर अब तक ठीक काम करता है। – ingenspor

+0

यदि आप इस तरह से स्टोरीबोर्ड का उपयोग कर रहे हैं, तो शायद आप इस प्रश्न की तरह कुछ उपयोग करना चाहते हैं; अपने स्वयं के विस्तार दृश्य नियंत्रक धक्का मत करो। http://stackoverflow.com/questions/8130600/use-didselectrowatindexpath-or-prepareforsegue-method-for-uitableview –

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