从下一页返回后,UITableView会关闭

时间:2015-04-18 17:10:42

标签: ios objective-c uitableview

从下一个ViewController弹出后,我的TableView的UITableViewWrapper关闭(改变等于tabBar的高度)。我怎样才能解决这个问题 ?以下代码不能解决这个问题所以我认为我应该在这里编写项目结构。

不起作用的代码:

self.documentsTableView.autoresizesSubviews = NO;
[self.documentsTableView setTranslatesAutoresizingMaskIntoConstraints:NO]

我的结构如下:导航控制器=>存在导航控制器,它是TabBarViewController的根。

1 个答案:

答案 0 :(得分:0)

查询控制器层次结构在问题中不明确。如果以下内容不具体,请使用您的控制器层次结构更新问题,这将有助于重现您的问题。例如,一个ViewController(UIViewController的类型)是导航控制器(UINavigationController)中的根视图,而navigationController是tabBarController(UITabBarController)中的第一个项目,考虑以下场景:

在AppDelegate.m中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    ViewController *viewController1 = [[ViewController alloc] init];
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController1];
    UITabBarController *tabBarController = [[UITabBarController alloc] init];
    tabBarController.viewControllers = @[navigationController];
    tabBarController.tabBarItem.title = @"First";
    self.window.rootViewController = tabBarController;
    return YES;
}

类层次结构

UIWindow
    UINavigationController
        UITabbarController 
            ViewController - this pushes FirstViewController
        FirstViewController

ViewController有一张桌子。如果在tableview上选择的任何项目推送新的视图控制器(FirstViewController)。然后, 在ViewController.m中

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.title = @"List";
    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectZero];
    tableView.dataSource = self;
    tableView.delegate = self;
    tableView.translatesAutoresizingMaskIntoConstraints = NO;
    [self.view addSubview:tableView];


    NSDictionary *viewDict = @{ @"tableView" : tableView };
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[tableView]|" options:NSLayoutFormatAlignAllTop metrics:nil views:viewDict]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[tableView]|" options:NSLayoutFormatAlignAllTop metrics:nil views:viewDict]];

}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 50;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    if (cell == nil) {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
    }

    cell.textLabel.text = [NSString stringWithFormat:@"data: %i", indexPath.row];
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    FirstViewController *firstViewController = [[FirstViewController alloc] init];
    [self.navigationController pushViewController:firstViewController animated:YES];

}

@end

当我们有垂直,水平约束时,告诉表视图的高度和宽度是灵活的父视图的高度和宽度。这些限制可能会对您有所帮助。