0

我试图在加载我的 tableView 之前创建一个加载视图控制器。这工作正常。

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

在此处输入图像描述

4

6 回答 6

0

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

  1. 使 2 和 3 视图成为一个视图。我的意思是您必须在包含表格视图的视图中心添加 ActivityIndi​​cator。
  2. 隐藏表格视图startAnimatingUIActivityIndicatorView.
  3. 做你所有的加载工作。
  4. 完成加载后,stopAnimating您的UIActivityIndicatorView和 使表格视图再次可见。

就是这样;)

于 2013-10-31T09:52:01.193 回答
0

不要通过navigationController推送优惠加载视图控制器,只需在viewDidLoad方法中的offersviewcontroller(第三个)上子视图它的视图:

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

处理加载后只需将其删除:

[offerLoadView.view removeFromSuperview];
于 2013-10-31T09:46:05.823 回答
0

好吧,如果你只是想隐藏后退导航栏按钮,你可以这样做

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

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

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

superView在不需要加载视图时将其隐藏或删除。您甚至可以在隐藏时对其进行动画处理,以提供更好的效果。

于 2013-10-31T09:50:31.900 回答
0

您有不同的选项可供选择,具体取决于您的需要:

  • 加载视图可以推送导航控制器。
  • 您可以避免使用完整的视图控制器来进行加载,而只需在“提供视图控制器”的其余部分上方设置一个视图。
  • 或者,如果您只想让按钮消失,请参考 Raon 的答案
于 2013-10-31T09:46:31.303 回答
0

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

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

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

于 2013-10-31T09:47:52.300 回答
0

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

self.navigationController.navigationBarHidden=YES;

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

self.navigationItem.hidesBackButton=YES;
于 2013-10-31T09:39:54.670 回答