Ios TableView显示的行数不超过10行

Ios TableView显示的行数不超过10行,ios,uitableview,tableview,Ios,Uitableview,Tableview,我正在制作一个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 210

我正在制作一个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放在stroyboard上时,有些东西不在那里吗?

正如我所怀疑的,您的tableview有一个固定的大小。这意味着它对于iPhone4来说足够大,但是在更高的设备上,tableview没有调整大小,这意味着tableview没有填满屏幕,你只能看到前10行,尽管你可以滚动查看所有项目

我所做的只是将正确的布局约束添加到tableview中,以固定以适应视图

至于你在YouTube上拍摄的视频,我今天下午看到了其中一些,虽然他们很热情,但他们有一些不好的做法,你不想成为一种习惯。试试iTunes上提供的免费斯坦福课程。也许再努力一点,但你会学到更多


正如我所怀疑的,您的表视图有一个固定的大小。这意味着它对于iPhone4来说足够大,但是在更高的设备上,tableview没有调整大小,这意味着tableview没有填满屏幕,你只能看到前10行,尽管你可以滚动查看所有项目

我所做的只是将正确的布局约束添加到tableview中,以固定以适应视图

至于你在YouTube上拍摄的视频,我今天下午看到了其中一些,虽然他们很热情,但他们有一些不好的做法,你不想成为一种习惯。试试iTunes上提供的免费斯坦福课程。也许再努力一点,但你会学到更多


有两个问题之一。UITableViewDataSource方法可能存在问题,但情况并非如此,或者表视图本身的大小不正确

对于第二种情况,即表视图已放在视图控制器的视图上,但大小不正确,有两种方法可以对此进行诊断。传统的方法是在调试器中运行程序,暂停执行,然后在lldb提示符下输入po[[UIWindow keyWindow]recursiveDescription]:

lldb po[[UIWindow keyWindow]递归描述] | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... 如果您查看上面的示例,主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>>
   |    |    |    | ...

有两个问题之一。UITableViewDataSource方法可能存在问题,但情况并非如此,或者表视图本身的大小不正确

对于第二种情况,即表视图已放在视图控制器的视图上,但大小不正确,有两种方法可以对此进行诊断。传统的方法是在调试器中运行程序,暂停执行,然后在lldb提示符下输入po[[UIWindow keyWindow]recursiveDescription]:

lldb po[[UIWindow keyWindow]递归描述] | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... 如果您查看上面的示例,主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>>
   |    |    |    | ...


Tableview在模拟器中很难向下滚动。我自己也有同样的问题。我所做的是用鼠标左键点击魔法鼠标,按住鼠标向下键,然后将鼠标本身向上移动,将我剩下的数字显示在Tableview上。希望这有帮助

在模拟器中向下滚动Tableview是很困难的。我自己也有同样的问题。我所做的是用鼠标左键点击魔法鼠标,按住鼠标向下键,然后将鼠标本身向上移动,将我剩下的数字显示在Tableview上。希望这对你有所帮助

YouTube教程系列中有一些非常奇怪的东西:是的,我只是跟着教程走。但我认为这样简单的代码没有任何问题。你知道吗?谢谢。你确定你的表视图完全在情节提要的范围内吗?您是否正确设置了约束?谢谢您的回复。请问如何检查边界?我没有任何限制。你是在故事板中创建的吗?你可能基于的YouTube教程系列中有一些非常奇怪的东西:是的,我只是遵循那个教程。但我认为这样简单的代码没有任何问题。你知道吗?谢谢。你确定你的表视图完全在情节提要的范围内吗?您是否正确设置了约束?谢谢您的回复。请问如何检查边界?我没有任何限制。你是在故事板中创建的吗?他给我发来了代码,它是一个固定大小的桌面视图,所以它不会为更大的手机调整大小。不过,对调试过程的解释很好:是的,我只是在提交我的帖子后才看到你的帖子,但从他的描述中,问题很明显。我只是花了几分钟的时间来做屏幕快照等。但看起来我们得出了类似的结论。谢谢你如此详细的解释。请允许我问一下,在上一个图中,您是否通过设置4 0来添加4约束?更重要的是单击这四个0旁边的工字梁。看看他们是怎么穿红色的?我通常也会取消选中“限制到边距”复选框,这会使我与早期iOS版本具有更高的向后兼容性,不过这取决于您。看到哇,谢谢你告诉我点击工字梁。我确实查过了。但问题仍然存在。我会在帖子中更新快照。他给我发了代码,这是一个固定大小的桌面视图,所以它不会为更大的手机调整大小。不过,对调试过程的解释很好:是的,我只是在提交我的帖子后才看到你的帖子,但从他的描述中,问题很明显。我只是花了几分钟的时间来做屏幕快照等。但看起来我们得出了类似的结论。谢谢你如此详细的解释。请允许我问一下,在上一个图中,您是否通过设置4 0来添加4约束?更重要的是单击这四个0旁边的工字梁。看看他们是怎么穿红色的?我通常也会取消选中“限制到边距”复选框,这会使我与早期iOS版本具有更高的向后兼容性,不过这取决于您。看到哇,谢谢你告诉我点击工字梁。我确实查过了。但问题仍然存在。我将在帖子中更新快照。