按下后退按钮,当我将视图控制器从堆栈中弹出时丢失了我的自定义UIToolBar

时间:2013-11-14 15:21:37

标签: ios iphone objective-c cocoa-touch uitoolbar

我希望每个人都有一个美好的一天到目前为止。

我遇到了我的应用程序的问题,我需要帮助搞清楚。我有一个视图控制器(让我们调用“A”)与自定义工具栏很好地工作。

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

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

...我按下了像这样关闭的locationsController上的后退按钮......

[self.navigationController popViewControllerAnimated:YES];

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

此外,locationsController可以从另一个视图控制器中推送/弹出,因此我需要确定哪个视图控制器正在弹出locationsController并触发buildtoolbar方法或者什么也不做,因为其他视图控制器没有工具栏

视图控制器“A”是一个XIB,而locationsController是在故事板中定义的。 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;
}

提前致谢!

1 个答案:

答案 0 :(得分:1)

我将来自viewDidLoad的toolbarSetup调用移动到viewWillAppear。显然,当最顶层的VC弹出堆栈时,第二个VC的viewDidLoad不会触发。 viewWillAppear会触发viewDidAppear等等....