代码之家  ›  专栏  ›  技术社区  ›  Fry user4951

UItable7查看错误的布局

  •  0
  • Fry user4951  · 技术社区  · 11 年前

    我有一个带有三个TableView的ViewController,如下图所示:

    Page screenshot

    这是三个表视图的声明代码:

    CGFloat x, y, w, h;
    
    x = 10.0f;
    y = 154.0f;
    w = 220.0f;
    h = 600.0f;
    
    self.usersTableView = [[UITableView alloc] initWithFrame:CGRectMake(x, y, w, h) style:UITableViewStylePlain];
    self.usersTableView.delegate = self;
    self.usersTableView.dataSource = self;
    [self.view addSubview:self.usersTableView];
    
    x = CGRectGetMaxX(self.usersTableView.frame) + 10.0f;
    
    self.groupsTableView = [[UITableView alloc] initWithFrame:CGRectMake(x, y, w, h) style:UITableViewStylePlain];
    self.groupsTableView.delegate = self;
    self.groupsTableView.dataSource = self;
    [self.view addSubview:self.groupsTableView];
    
    x = CGRectGetMaxX(self.groupsTableView.frame) + 10.0f;
    
    self.officesTableView = [[UITableView alloc] initWithFrame:CGRectMake(x, y, w, h) style:UITableViewStylePlain];
    self.officesTableView.delegate = self;
    self.officesTableView.dataSource = self;
    [self.view addSubview:self.officesTableView];
    

    第一个表具有不同的内容布局。我试图更改三个表的顺序,但第一个表总是显示错误的布局(为了隐私,我隐藏了行的内容)。

    编辑 以下是数据源方法:

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return 1;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        if (tableView == self.usersTableView)
        {
            return self.usersDataSource.count;
        }
        else if (tableView == self.groupsTableView)
        {
            return self.groupsDataSource.count;
        }
        else if (tableView == self.officesTableView)
        {
            return self.officesDataSource.count;
        }
    
        return 0;
    }
    
    - (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (tableView == self.usersTableView)
        {
            static NSString *CellIdentifier = @"Cell_User";
            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
            if (cell == nil)
            {
                cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
                cell.textLabel.font = [UIFont systemFontOfSize:13.0f];
            }
    
            User * aUser = self.usersDataSource[indexPath.row];
    
            cell.textLabel.text = aUser.Name;
    
            return cell;
        }
        else if (tableView == self.groupsTableView)
        {
            static NSString *CellIdentifier = @"Cell_Group";
            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
            if (cell == nil)
            {
                cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
                cell.textLabel.font = [UIFont systemFontOfSize:13.0f];
            }
    
            Group * aGroup = self.groupsDataSource[indexPath.row];
    
            cell.textLabel.text = aGroup.Name;
    
            return cell;
        }
        else if (tableView == self.officesTableView)
        {
            static NSString *CellIdentifier = @"Cell_Office";
            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
            if (cell == nil)
            {
                cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
                cell.textLabel.font = [UIFont systemFontOfSize:13.0f];
            }
    
            Office * anOffice = self.officesDataSource[indexPath.row];
    
            cell.textLabel.text = anOffice.Name;
    
            return cell;
        }
    
        return nil;
    }
    

    非常感谢你。

    1 回复  |  直到 11 年前
        1
  •  2
  •   perplex    11 年前

    在iOS 7中,UIViewController会自动插入它在视图层次结构中找到的第一个UIScrollView,以说明新的半透明UINavigationBar。

    要关闭此行为,请尝试在“init”方法中将UIViewController上的“automaticallyAdjustsScrollViewInsets”属性更改为“NO”。

    self.automaticallyAdjustsScrollViewInsets = NO;
    

    更多信息可在此处找到: https://developer.apple.com/library/ios/documentation/userexperience/conceptual/transitionguide/AppearanceCustomization.html

    如果这没有帮助,那么UITableViewDataSource肯定有问题。

    推荐文章