0

我有一个我正在努力解决几天的错误。我基本上想制作一个像 Instagram 一样的个人资料。

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。

非常感谢任何形式的帮助。这是一个真正的窃听情况。谢谢

4

1 回答 1

0

我犯了一个愚蠢的错误,很难识别 @Matt 的建议有帮助。

[self.fanOfViewController.containerView addSubview:self.fanOfViewController.userSimpleTableView];

[self.currentViewController.view removeFromSuperview];
[self.currentViewController removeFromParentViewController];

self.fanOfViewController.containerView = self.containerView;
[self addChildViewController:self.fanOfViewController];
[self.containerView addSubview:self.fanOfViewController.view];

//CLEAN UP THE CONTAINER VIEW BY REMOVING THE PREVIOUS ADDED TABLE VIEWS
[self.userWallViewController.activityFeedTableView removeFromSuperview];
[self.userFansViewController.userSimpleTableView removeFromSuperview];

每次我通过按下相应的按钮从它的视图控制器添加一个新的 tableView 时,我都将它堆叠在当前的视图容器中。当我试图从层次结构中删除相应的 viewController 然后再次添加时,没有调用 viewDidLoad 方法(它只是第一次调用)。那是我删除tableView的逻辑的地方。

现在我也在按下按钮时添加它,并从“堆栈”中删除其他 tableViews。这可能不是最好的方法,但我确实计划对其进行优化。我希望这足够清楚,并且可以帮助遇到此问题的任何人。

于 2012-10-28T07:36:27.400 回答