Значок панели инструментов (pagecurl) не загружен - PullRequest
0 голосов
/ 01 декабря 2011

Я загружаю просмотр карты. Я создал кнопку на нижней панели инструментов представления, установив ее идентификатор как pagecurl. Как и ожидалось, загружается кнопка со значком скручивания страницы. Из этого вида карты я перехожу в другой вид, нажимая на аннотации в виде карты. И тогда я возвращаюсь к просмотру карты. В это время мой значок кнопки 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];
    }
}

Ответы [ 2 ]

1 голос
/ 18 декабря 2011

Несмотря на то, что это длинный путь, это может быть связано с вызовами setHidden в ваших методах появления и исчезновения.

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

Лучший способ сделать это, используя метод "-setHidesBottomBarWhenPhed:" UIViewController.

Возможно, попробуйте использовать 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);
}
0 голосов
/ 09 декабря 2011

setHidesBottomBarWhenPushed метод добился цели в этом случае.

...