我是Objective-C / Cocoa Touch的新手,希望有人可以帮助解决以下问题。
我在屏幕底部有一个带有mapview控件和UIToolBar的视图。当用户点击地图上的图钉时,他们可以深入查看分组的UITableView,其中包含该位置的详细信息。
这是通过推送一个新的navigationController来完成的:
MapAnnotation *tappedLocation = (MapAnnotation *)[view annotation];
LocationDetailsViewController *placeDetails = [[LocationDetailsViewController alloc] initWithNibName:@"LocationDetailsViewController" bundle:nil];
[self.navigationController pushViewController:placeDetails animated:YES];
[placeDetails release];
在分组的UITableView中,屏幕底部还有一个UIToolbar,但它是以编程方式设置的(下面的代码)。
问题是,当用户离开分组的UITableView并返回带有地图的主视图时,他们仍然会看到UITableView中的UIToolbar,而不是IB中设置的原始UIToolbar。
任何人都知道如何从分组的UITableView中“取消”UIToolbar吗?
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];
答案 0 :(得分:0)
不要将工具栏添加为navigationController的子视图。只要应用程序正在运行,该视图就会保留在屏幕上(如果您继续进入详细信息视图并返回,则会堆积很多视图)。
只需使用[UIViewController setToolbarItems:animated:]