Неправильный UIToolbar появляется после просмотра всплывающих окон - PullRequest
0 голосов
/ 12 апреля 2011

Я новичок в Objective-C / Cocoa Touch и надеюсь, что кто-то может помочь со следующей проблемой.

У меня есть вид с элементом управления mapview и UIToolBar внизу экрана.Когда пользователь щелкает булавку на карте, он может перейти к сгруппированному UITableView с подробной информацией о местоположении.

Это делается путем нажатия на новый навигационный контроллер:

MapAnnotation *tappedLocation = (MapAnnotation *)[view annotation];

LocationDetailsViewController *placeDetails = [[LocationDetailsViewController alloc] initWithNibName:@"LocationDetailsViewController" bundle:nil];
[self.navigationController pushViewController:placeDetails animated:YES];
[placeDetails release];

В сгруппированномUITableView также есть UIToolbar внизу экрана, но он настроен программно (код ниже).

Проблема в том, что когда пользователь покидает сгруппированный UITableView и возвращается к основному виду с картой,они все еще видят UIToolbar из UITableView, а не исходный, который был установлен в IB.

Кто-нибудь знает, как я могу «отменить» UIToolbar из сгруппированного UITableView?

UIToolbar *toolbar = [UIToolbar new];
toolbar.barStyle = UIBarStyleDefault;
[toolbar sizeToFit];
toolbar.frame = CGRectMake(0, 436, 320, 44);
toolbar.tag = 123;

UIBarButtonItem *flexItem = [[UIBarButtonItem alloc]   
    initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
    target:nil
    action:nil];

UIBarButtonItem *emailButton = [[UIBarButtonItem alloc]
    initWithBarButtonSystemItem:UIBarButtonSystemItemAction
    target:self
    action:@selector(email:)];

//Add buttons to the array
NSArray *items = [NSArray arrayWithObjects: flexItem, flexItem, flexItem, emailButton, nil];
[emailButton release];
[flexItem release];

//add array of buttons to toolbar
[toolbar setItems:items animated:YES];

[self.navigationController.view addSubview:toolbar];

1 Ответ

0 голосов
/ 12 апреля 2011

Не добавляйте панель инструментов в качестве подпредставления навигационного контроллера. Это представление остается на экране до тех пор, пока приложение работает (многие из них будут накапливаться, если вы продолжите переходить в представление сведений и обратно).

Просто установите элементы панели инструментов, используя [UIViewController setToolbarItems:animated:]

...