0

我希望到目前为止,每个人都过得愉快。

我的应用程序遇到问题,我需要一些帮助来解决。我有一个带有自定义工具栏的视图控制器(让我们称之为“A”),效果很好。

当我从视图控制器“A”推送视图控制器(我们称之为“locationsController”)时......

[self.navigationController pushViewController:self.locationsController animated:YES];    

...然后我按下位置​​控制器上的后退按钮,它像这样关闭...

[self.navigationController popViewControllerAnimated:YES];

弹出 locationController 时,我在视图控制器“A”中丢失了自定义工具栏。如何修复它以便我可以拦截并调用我的 buildtoolbar 方法?

此外,可以从另一个视图控制器推送/弹出位置控制器,因此我需要确定哪个视图控制器正在弹出位置控制器,并且要么触发 buildtoolbar 方法,要么什么都不做,因为另一个视图控制器没有工具栏。

视图控制器“A”是 XIB,而位置控制器在情节提要中定义。XIB 在视图/布局中没有工具栏。

从 viewDidLoad [self buildToolbar] 调用的工具栏代码...

-(void) buildToolbar{

blah blah blah
self.navigationController.toolbarHidden = NO;
UIBarButtonItem *flexableItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem *refresh = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refresh:)];
UIBarButtonItem *comments = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Comments-selected.png"] style:UIBarButtonItemStyleDone target:self action:@selector(cameraButtonTapped:)];
UIBarButtonItem *pin = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Pin-straight_60wide.png"] style:UIBarButtonItemStyleDone target:self action:@selector(pinBarButtonItemPressed:)];

NSArray *items = [NSArray arrayWithObjects:customBarButtonItem_right, flexableItem, comments, flexableItem, pin, flexableItem, refresh, nil];
  //  [self.navigationController.toolbar setItems:items animated:YES];
self.toolbarItems = items;
}

提前致谢!

4

1 回答 1

1

我将对toolbarSetup 的调用从viewDidLoad 移到viewWillAppear。显然,当最顶部的 VC 从堆栈中弹出时,第二个 VC 的 viewDidLoad 不会触发。viewWillAppear 触发后跟 viewDidAppear 等......

于 2013-11-15T15:50:29.207 回答