从下一个ViewController弹出后,我的TableView的UITableViewWrapper关闭(改变等于tabBar的高度)。我怎样才能解决这个问题 ?以下代码不能解决这个问题所以我认为我应该在这里编写项目结构。
不起作用的代码:
self.documentsTableView.autoresizesSubviews = NO;
[self.documentsTableView setTranslatesAutoresizingMaskIntoConstraints:NO]
我的结构如下:导航控制器=>存在导航控制器,它是TabBarViewController的根。
答案 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
当我们有垂直,水平约束时,告诉表视图的高度和宽度是灵活的父视图的高度和宽度。这些限制可能会对您有所帮助。