UITableViewController 中 numberOfRowsInSection 中的 section 值始终为 1

Posted

技术标签:

【中文标题】UITableViewController 中 numberOfRowsInSection 中的 section 值始终为 1【英文标题】:section value is always 1 in numberOfRowsInSection in UITableViewController 【发布时间】:2016-07-29 08:59:47 【问题描述】:

我在 tableview 中有两个部分位于 tableviewcontroller 内 由于某种原因,方法 numberOfRowsInSection 中的部分值始终为“1”。这很奇怪,因为一切似乎都很好。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 

    // Return the number of sections.
    return 2;


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    // Return the number of rows in the section.
    int i=section;
    if(section==0)
        return 1;
    else
        return [self.flightDetailsArray count];
    

在情节提要中,我有一个包含两个部分的表格

好的,再次为您理解问题。看这段代码

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    // Return the number of rows in the section.

    NSLog(@"Section: %d",(int)section);
    if(section==0)
        return 1;
    else
        return [self.flightDetailsArray count];
    

在日志中我总是看到“1” 那是什么?很奇怪

【问题讨论】:

这很不寻常。你能证明你怎么知道它永远不是0吗? 我使用调试器。我什至可以记录它。但无论如何它总是“1” 我怀疑情况是否如此,所以请您提供更多证据,以便我们查看您是否在调查中遗漏了什么。 我可以提供故事板屏幕,还要注意它是一个 UITableViewController 我会尝试重新创建这些部分,可能是 xcode 的一些错误。我试图清理项目,没有帮助。 【参考方案1】:

我不明白这背后的原因,因为我也是初学者,但就我而言,我认为你第一次尝试返回 1 行,下一步你想返回flightDetailsArray 的计数,所以也许你可以通过这些步骤来实现:-

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    // Return the number of rows in the section.
    static int i=0
    if(i==0)
        return 1;
        i++;
    else
        return [self.flightDetailsArray count];
    



【讨论】:

我希望第一部分包含 1 行,第二部分 [self.flightDetailsArray count] 但由于某种原因部分始终为“1” numberOfRowsInSection:(NSInteger)section 我的意思是这个参数方法。 你为什么不试试我的回答:) 因为它和我一样吗?而且它不应该这样做【参考方案2】:

我认为您只想在第一部分返回 1 行,然后在第二部分返回 flightDetailsArray 中的对象数。如果是这样的话,那就这样做吧,

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
    return 2;


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    if(section==0)
        return 1;
    else
        return [self.flightDetailsArray count];
    

现在,如果您的 flightDetailsArray 中只有一个对象,您的第二部分可能也将保留 1 行。

请尝试打印NSLog(@"%@", [self.flightDetailsArray count])并查看对象编号。

【讨论】:

【参考方案3】:

对不起,伙计们。问题是我使用了 satic 类型的 tableview,但内部也有动态单元格。所以我没注意。然后我将 id 更改为动态,并添加了动态部分,它工作得很好。抱歉耽误您的时间。

【讨论】:

以上是关于UITableViewController 中 numberOfRowsInSection 中的 section 值始终为 1的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViewController 中没有调用 cellForRowAtIndex?

在导航栏中使用 UITableViewController

UITableViewController 在弹出窗口中显示不同,为啥?

在 UINavigationController 中显示 UITableViewController

在 UIPopoverController 中显示 UItableViewController

在 UITableViewController 中没有调用 viewWillAppear?