加载视图控制器嵌入导航内部

时间:2013-10-31 09:36:12

标签: ios objective-c uinavigationcontroller uistoryboard

我在加载tableView之前尝试创建一个加载视图控制器。这很好。

然而,当显示tableView时,我得到一个后退按钮。单击它会将我带回加载视图。我猜这是因为它嵌入在导航控制器内部。请指教。

enter image description here

6 个答案:

答案 0 :(得分:0)

如果你想隐藏后退按钮,只需添加

self.navigationController.navigationBarHidden=YES;

在第三个View控制器的viewDidLoad中 否则添加

self.navigationItem.hidesBackButton=YES;

答案 1 :(得分:0)

不要通过navigationController推送商品加载视图控制器,只需在viewDidLoad方法中查看offerviewcontroller(第三个)上的视图:

OffersLoadViewController *offerLoadView = [[OffersLoadViewController alloc] initWithNibName:@"OffersLoadViewControllerv" bundle:nil];
[self.view addSubview: offerLoadView.view];

处理加载后只需删除它:

[offerLoadView.view removeFromSuperview];

答案 2 :(得分:0)

根据您的需要,您可以选择不同的选项:

  • 加载视图可以推送导航控制器。
  • 您可以避免使用完整视图控制器进行加载,而只是将视图设置在“商品视图控制器”的其余部分之上。
  • 或者,如果您只想让按钮消失,请参阅Raon答案

答案 3 :(得分:0)

导航控制器将保留您在导航堆栈中推送的所有控制器。

因此,如果您使用导航控制器推送liftviewcontroller,然后推送tableview控制器,导航堆栈将包含控制器,这就是为什么按下后退按钮,您将导航到loadingViewController。

我建议在加载tableview之前删除loadingviewcontroller并在tableviewcontroller中显示加载视图。就像在tableviewcontroller的viewWillAppear中一样,只需添加带有加载指示符的UIView,并将其添加为tableviewcontroller的子视图,并在准备好显示tableview后将其删除。

答案 4 :(得分:0)

好吧,如果您只想隐藏后退导航栏按钮,可以执行此操作

 [self.navigationController.navigationItem setHidesBackButton:YES animated:YES];

但显示加载控制器视图的更好方法是

[self.view addSubview:loadingController.view];
[loadingController willMoveToParentViewController:self];
[self addChildViewController:loadingController];
[loadingController didMoveToParentViewController:self];

只需隐藏它,或在不需要加载视图时将其从superView中删除。您甚至可以在隐藏时为其设置动画,以便产生更好的效果。

答案 5 :(得分:0)

这里有一个架构问题,最好的方法如下:

  1. 将2和3视图设为一个。我的意思是你必须在包含表视图的视图的中心添加ActivityIndi​​cator。
  2. 隐藏表格视图,startAnimating UIActivityIndicatorView
  3. 做你所有的装货。
  4. 完成加载后,stopAnimating UIActivityIndicatorView并再次显示表格视图。
  5. 就是这样;)