【发布时间】:2012-10-23 21:36:14
【问题描述】:
我有这个错误,我已经为此苦苦挣扎了几天。我基本上想像 Instagram 一样制作个人资料。
当您单击上部“标签栏”中的前两个按钮之一时,内容将显示在下部。屏幕的上半部分保持不变。我有一些 UIViewControllers 和一些 UITableViewController。我有 5 个按钮来显示视图控制器。我的问题是我可以显示一个 tableviewcontroller,但是如果我尝试显示第二个然后返回到第一个,例如,它会卡在我显示的最后一个。我希望这足够清楚。这是显示视图控制器的代码。
- (IBAction)wallButtonPressed:(id)sender
{
if(!_userWallViewController) {
self.userWallViewController = [[WallViewController alloc] init];
self.userWallViewController.activityFeedTableView.bounds = self.containerView.bounds;
}
[self.currentViewController.view removeFromSuperview];
[self.currentViewController removeFromParentViewController];
self.currentViewController = self.userWallViewController;
self.userWallViewController.searchURLString = [NSString stringWithFormat:@"/event/user/%@", self.userID];
self.userWallViewController.containerView = self.containerView;
[self.containerView addSubview:self.userWallViewController.view];
[self addChildViewController:self.userWallViewController];
[self.userWallViewController.view setNeedsDisplay];
[self.userWallViewController viewWillAppear:YES];
}
containerView 是一个占据整个屏幕下部的 UIView。 currentViewController 是一个占位符 viewController,而 userWallViewController 是一个 UITableViewController。
非常感谢任何形式的帮助。这是一个真正的窃听情况。谢谢
【问题讨论】:
-
这些属性设置器是否被覆盖?您可能应该在将视图添加到容器之前明确设置视图的框架。 self.currentViewController.view.frame = self.containerView.bounds;还有一些其他提示:子 vc 不需要了解容器。 viewWillAppear、didAppear、willDisappear、didDisappear 应在显式或隐式处理时正确处理(不应该真正影响您的错误,但通常确保事情按预期工作)。在添加视图之前添加子 vc。不需要显式显示。
-
嘿。我写了 self.currentViewController.view.frame = self.containerView.bounds 因为当我试图显示 tableviewcontrollers 时,它们几乎会全屏呈现。此外,添加最后两行只是为了查看它是否以任何方式修复了我的错误。当然,它没有。我还尝试在添加视图之前添加子 vc。不工作。帮助我解决这个问题不会没有大量的感谢和赞美:)
-
您可以尝试在根控制器的 viewDidLoad 中添加视图和子视图控制器,然后设置选定视图,只需隐藏和取消隐藏正确的视图。您也可以将逻辑分解为另一种方法,以便于跟踪;按钮触发 [self showViewWithIndex:[buttonArray indexOfObject:button]]。完成这项工作后,您可以尝试通过根据需要删除视图来进行优化,但这可能是一种更简单的方法。
标签: ios uiviewcontroller uitableview instagram