0

マップビューを読み込んでいます。ビューのボトムバー ツールバーにバーボタンを作成し、その識別子を pagecurl に設定しました。予想どおり、ページ カール アイコンの付いたバーボタンが読み込まれます。このマップビューから、マップビューの注釈をクリックして、別のビューに移動します。そして、マップビューに戻ります。その際、私のpagecurl barbuttonアイコン(pagecurl icon)は表示されず、私のbarbuttonの幅も縮小されています。私は問題を理解することができません。

- (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];
    }
}
4

2 に答える 2

1

ロングショットではありますが、それはあなたの appear メソッドと消えるメソッドの setHidden 呼び出しに関係している可能性があります。

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

これを行うには、UIViewController の「-setHidesBottomBarWhenPushed:」メソッドを使用するのが最善の方法です。

-viewWillAppear で NSLog() を試してみてください:

// 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);
}
于 2011-12-18T04:21:34.487 に答える
0

setHidesBottomBarWhenPushedこの場合、メソッドがうまくいきました。

于 2011-12-09T09:12:51.597 に答える