iOS 5 : numberOfRowsInSection doesn't work

标签 ios cocoa-touch uitableview

我在 storybord 和 UISegmentedControl 中有一个 tableView 来用不同的数据和不同的设计填充上面提到的表格。我的问题是 numberOfRowsInSection 方法在我切换 UISegmentedControl 时没有反应。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(self.segment.selectedSegmentIndex==0)
{
    return [self.items count];
    NSLog(@"Nominals: %d",self.items.count);
}
if(self.segment.selectedSegmentIndex==1)
{
    return [self.coinageArr count];
    NSLog(@"Coinage: %d",self.coinageArr.count);
}
//return 0; Complains about no return.
}

好吧,NSLogs 在导航时不起作用。在这种情况下如何返回 NSInteger ?

提前谢谢。

编辑:对于shannoga

段 Controller 切换方法:
-(IBAction)segmentValueChaged:(id)sender
{
switch (self.segment.selectedSegmentIndex) 
{
    case 0:
    {
         DBAccess *access=[[DBAccess alloc]init];
        self.items=[access returnNominals:self.entityID nk:fromPeriod];
        [access closeDataBase];            
        self.tableView.hidden=NO;
        [self.tableView reloadData];
         break;
    }
    case 1:
    {
        DBAccess *access=[[DBAccess alloc]init];
        self.coinageArr=[access returnCoinage:fromPeriod period:self.entityID];
        self.tableView.hidden=NO;
        [self.tableView reloadData];

        break;
    }
}
}

最佳答案

  • NSLog 不起作用,因为返回在您到达此行之前生效,并且永远不会执行。

  • 将其更改为:
        - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
    if(self.segment.selectedSegmentIndex==0)
    {
         NSLog(@"Nominals: %d",self.items.count);
        return [self.items count];
    }
    if(self.segment.selectedSegmentIndex==1)
    {
       NSLog(@"Coinage: %d",self.coinageArr.count);
        return [self.coinageArr count];
    }
    //return 0; Complains about no return.
    }
    
  • 您能否显示更改 UISegmentedControl 时调用的方法?
  • 请注意,您不需要设置 2 if 语句,您可以使用 else .
  • 正如@Ryan 所说,您应该使用 [tableview reloadData]在您的 UISegmentedControl 更改上。那么改self.items就好了valueChanged 中的数组方法并离开 numberOfRowsInSection没有改变,所以它看起来像这样:
      - (void)valueChanged:(id)sender
      {
        if(self.segment.selectedSegmentIndex==0)
        {
            self.items = what ever
        }else{
            self.items = what ever
        }
        [tableview reloadData];
       }
    
        - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
         return [self.items count];
       }
    

  • 祝你好运

    关于iOS 5 : numberOfRowsInSection doesn't work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11974699/

    相关文章:

    ios - 管理 CGImageRef 内存的规则?

    ios - deselectRowAtIndexPath 和 cell setSelected 有什么区别?

    objective-c - 谁能帮我理解这个? ------ ( )? []:[ ] in objectiveC

    iphone - 如何在 iPhone 中的 RSS 提要更新时创建推送通知?

    iphone - 如何诊断EXC_CRASH?

    objective-c - UITableView reloadSection 和 reloadRowsAtIndexPaths 导致奇怪的动画

    iphone - 设置 UITableViewCell 文本的宽度

    ios - Multipeer 框架中超过 8 个节点

    ios - 如何发布 WatchOS2 应用程序更新?

    iOS7 : UILabel constantly redraw itself on UITableViewCell