工具栏栏按钮图标(pagecurl)未加载



我正在加载mapview。我在视图的底部工具栏中创建了一个栏按钮,将其标识符设置为pagecurl。如预期的那样,加载了一个带有页面卷曲图标的栏按钮。通过单击mapview中的注释,我从这个mapview移动到另一个视图。然后回到mapview。那时我的pagecurl栏按钮图标(pagecurl图标)不显示,我的栏按钮宽度也减少了。我不能解决这个问题。

- (void)viewDidLoad
{
    [super viewDidLoad];
    if(isSingleContactSelected)
    {
        [self.navigationController.navigationBar setBarStyle:UIBarStyleDefault];
        self.navigationItem.leftBarButtonItem = self.cancelButton   ;
        [self.cancelButton setTarget:self];
        [self.cancelButton setAction:@selector(onClose:)];
        [addressFieldSearchBar setFrame:CGRectMake(66, 0, 256, 44)];
        addressFieldSearchBar.delegate =self;
        [self.navigationController.navigationBar setBarStyle:UIBarStyleDefault];
        [self.navigationController.navigationBar addSubview:addressFieldSearchBar];
        [searchDirectionSegmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
        UIBarButtonItem *searchDirectionSegmentedButton = [[UIBarButtonItem alloc] initWithCustomView:searchDirectionSegmentedControl];
        flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
        NSArray *toolbarItems = [NSArray arrayWithObjects: compassButton , flexibleSpace, searchDirectionSegmentedButton, flexibleSpace, pageButton, nil];
        [self setToolbarItems:toolbarItems];
        self.navigationController.toolbarHidden = NO;
        [compassButton release];
        [pageButton release];
        [searchDirectionSegmentedControl release];
        mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
        mapView.delegate=self; 
        [self.view addSubview:mapView]; 
    }
}
- (void)viewDidUnload{
    [super viewDidUnload];    
}
-(void) viewWillAppear:(BOOL)animated{
    if(isSingleContactSelected){
        [self.navigationController.navigationBar setHidden:NO];
        [self.navigationController.toolbar setHidden:NO];
        [self.navigationController.toolbar setBarStyle:UIBarStyleDefault];
        [self.addressFieldSearchBar setHidden:NO];
    }
}
-(void) viewWillDisappear:(BOOL)animated{
    if(isSingleContactSelected){
        [self.addressFieldSearchBar setHidden:YES];
        [self.navigationController.toolbar setHidden:YES];
    }
}

虽然这是一个很长的镜头,它可能是与setHidden调用在你的出现和消失的方法。

[self.navigationController.toolbar setHidden:YES];
[self.navigationController.toolbar setHidden:NO];

最好的方法是使用UIViewController的"- sethidesbottombarwhenpushing:"方法。

也许可以试试NSLog()在-viewWillAppear:

// If pageButton is an instance variable
NSLog(@"%@",pageButton);
// Enumerate through all toolbar items.
// Check to see if NSLog output differs after pushing/popping this view controller.
for (UIBarButtonItem *item in [self.navigationController.toolbar.items])
{
    NSLog(@"%@",item);
}

setHidesBottomBarWhenPushed方法在这种情况下发挥了作用。

最新更新