TableView不显示超过10行

用户4441082

我正在做一个tableview,当显示1-10行时,一切正常。但是,当添加10行以上时。它正在构建,但是在模拟器中,它仅显示10行。

这是我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.greekLetters=
    @[@"CHEM 1100",@"CHEM 2100 ",@"CHEM 3415W",@"CHEM 3511",@"CHEM 3521",@"CHEM 4600",@"PHYS 1150",@"PHYS 2150",@"MATH 1201",@"MATH 1206",@"Adv courses",@"CHEM 2700"];

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [self.greekLetters count];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSString *SimpleIdentifier=@"SimpleIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: SimpleIdentifier];

    if (cell ==nil) {
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:SimpleIdentifier];
    }
    cell.textLabel.text=self.greekLetters[indexPath.row];

    if(indexPath.row==0) cell.detailTextLabel.text=@"General Chemistry I";
    if(indexPath.row==1) cell.detailTextLabel.text=@"General Chemistry II";
    if(indexPath.row==2) cell.detailTextLabel.text=@"Analytical Chemistry";
    if(indexPath.row==3) cell.detailTextLabel.text=@"Organic Chemistry I";
    if(indexPath.row==4) cell.detailTextLabel.text=@"Organic Chemistry II";
    if(indexPath.row==5) cell.detailTextLabel.text=@"Physical Chemistry(HP)";
    if(indexPath.row==6) cell.detailTextLabel.text=@"General Physics I";
    if(indexPath.row==7) cell.detailTextLabel.text=@"General Physics II";
    if(indexPath.row==8) cell.detailTextLabel.text=@"Calculus I";
    if(indexPath.row==9) cell.detailTextLabel.text=@"Calculus II";
    if(indexPath.row==10) cell.detailTextLabel.text=@"pick 5 creit";
    if(indexPath.row==11) cell.detailTextLabel.text=@"Introduction to Inorganic Chemistry";

    return cell;

}

-(NSIndexPath *) tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{

        return indexPath;

    }

是我的代码还是模拟器的问题?是因为当我将Tableview放在滑板上时,那里有些东西不对吗?

有两个问题之一。UITableViewDataSource方法有问题(似乎不是这种情况),或者表视图本身的大小不正确。

对于第二种情况(表视图已放在视图控制器的视图上,但大小错误),有两种诊断方法。老式的技术是在调试器中运行程序,暂停执行,然后po [[UIWindow keyWindow] recursiveDescription](lldb)提示符下输入

(lldb) po [[UIWindow keyWindow] recursiveDescription]
<UIWindow: 0x7b7956b0; frame = (0 0; 320 480); gestureRecognizers = <NSArray: 0x7b795b30>; layer = <UIWindowLayer: 0x7b795670>>
   | <UIView: 0x7c943380; frame = (0 0; 320 480); autoresize = W+H; layer = <CALayer: 0x7c9434f0>>
   |    | <UITableView: 0x7d064a00; frame = (0 0; 600 600); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7c941de0>; layer = <CALayer: 0x7c93d3f0>; contentOffset: {0, 0}; contentSize: {600, 528}>
   |    |    | <UITableViewWrapperView: 0x7c942830; frame = (0 0; 600 600); gestureRecognizers = <NSArray: 0x7c942df0>; layer = <CALayer: 0x7c942b30>; contentOffset: {0, 0}; contentSize: {600, 600}>
   |    |    |    | <UITableViewCell: 0x7c955b50; frame = (0 484; 600 44); text = 'CHEM 2700'; autoresize = W; layer = <CALayer: 0x7c955ce0>>
   |    |    |    |    | <UITableViewCellContentView: 0x7c955d30; frame = (0 0; 600 43.5); gestureRecognizers = <NSArray: 0x7c955f40>; layer = <CALayer: 0x7c955da0>>
   |    |    |    |    |    | <UITableViewLabel: 0x7c955f90; frame = (15 12; 93 20.5); text = 'CHEM 2700'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7c956050>>
   |    |    |    |    |    | <UITableViewLabel: 0x7c9562c0; frame = (314.5 12; 270.5 20.5); text = 'Introduction to Inorganic...'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7c956380>>
   |    |    |    |    | <_UITableViewCellSeparatorView: 0x7c956680; frame = (15 43.5; 585 0.5); layer = <CALayer: 0x7c956700>>
   |    |    |    | ...

如果您看上面的示例,主UIView窗口的尺寸为320x480,但奇怪的是,tableview的尺寸为600x600。这不好。如果要使表格视图正确滚动,它们的大小必须相同。

在Xcode 6中进行诊断的另一种方法是在调试器中运行应用程序,然后您可以暂停执行,然后按调试视图层次结构按钮:

调试视图层次结构

如果这样做,您将看到视图层次结构,并且如果有任何视图大小错误,它们将像这样突出显示:

查看层次结构调试屏幕

就解决此问题而言,典型的解决方案是确保您具有表视图的所有约束(例如,在这里我选择了表视图,并添加了前,后,顶部和底部约束):

添加约束

然后,当我重新运行应用程序并查看视图层次结构时,一切都很好地匹配了:

(lldb) po [[UIWindow keyWindow] recursiveDescription]
<UIWindow: 0x7bc34ee0; frame = (0 0; 320 480); gestureRecognizers = <NSArray: 0x7bc352f0>; layer = <UIWindowLayer: 0x7bc32680>>
   | <UIView: 0x7ba387d0; frame = (0 0; 320 480); autoresize = W+H; layer = <CALayer: 0x7ba38940>>
   |    | <UITableView: 0x7d08d400; frame = (0 0; 320 480); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7ba37260>; layer = <CALayer: 0x7ba32a80>; contentOffset: {0, 0}; contentSize: {320, 528}>
   |    |    | <UITableViewWrapperView: 0x7ba37ca0; frame = (0 0; 320 480); gestureRecognizers = <NSArray: 0x7ba38260>; layer = <CALayer: 0x7ba37fa0>; contentOffset: {0, 0}; contentSize: {320, 480}>
   |    |    |    | <UITableViewCell: 0x7ba3f270; frame = (0 0; 320 44); text = 'CHEM 1100'; autoresize = W; layer = <CALayer: 0x7ba3f5a0>>
   |    |    |    |    | <UITableViewCellContentView: 0x7ba3faf0; frame = (0 0; 320 43.5); gestureRecognizers = <NSArray: 0x7ba40400>; layer = <CALayer: 0x7ba3fcc0>>
   |    |    |    |    |    | <UITableViewLabel: 0x7ba40840; frame = (15 12; 93 20.5); text = 'CHEM 1100'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7ba40b20>>
   |    |    |    |    |    | <UITableViewLabel: 0x7ba44a10; frame = (153.5 12; 151.5 20.5); text = 'General Chemistry I'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7ba44ad0>>
   |    |    |    |    | <_UITableViewCellSeparatorView: 0x7ba456a0; frame = (15 43.5; 305 0.5); layer = <CALayer: 0x7ba45840>>
   |    |    |    | ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TableView不显示超过10行

来自分类Dev

TableView不显示行

来自分类Dev

TableView 不显示数据

来自分类Dev

dataTable 不能在表中显示超过 10 行

来自分类Dev

TableView不显示标签iOS

来自分类Dev

TableView不显示标签iOS

来自分类Dev

Javafx TableView 不显示数据

来自分类Dev

tableView 不显示我的数据

来自分类Dev

jqGrid不显示行

来自分类Dev

超过 1 个系列的 Highchart 显示不显示

来自分类Dev

在tableView中使用MBProgressHUD时不显示

来自分类Dev

Tableview不显示所有PFQuery结果

来自分类Dev

Firebase 的 TableView 中不显示数据

来自分类Dev

rub不显示Windows 10

来自分类Dev

我如何不显示价格超过???的元素?从容器

来自分类Dev

GetDirectoryContents方法不显示超过28MB的文件

来自分类Dev

刷新jtable而不显示结果超过一次

来自分类Dev

当结果超过100时,程序不显示结果?

来自分类Dev

ViewBag不显示新行

来自分类Dev

wpf datagrid不显示数据,但显示行

来自分类Dev

高亮显示行,但不显示整行

来自分类Dev

Kafka - 如何读取超过 10 行

来自分类Dev

Windows 10不显示桌面

来自分类Dev

UICollectionView在iOS 10中不显示图像

来自分类Dev

Javac在Windows 10中不显示结果

来自分类Dev

JavaFX动态TableView不显示数据库中的数据

来自分类Dev

弹出式窗口中的Swift Tableview不显示数据

来自分类Dev

当tableview有很多行时,uirefreshcontrol不显示

来自分类Dev

javafx Tableview不显示数据库中的数据