iOS 5:numberOfRowsInSection不';行不通
我在storybord和UISegmentedControl中有一个tableView,用不同的数据和不同的设计填充上面提到的表。我的问题是,当我切换UISegmentedControl时,Section meth中的rowsin数不起反应iOS 5:numberOfRowsInSection不';行不通,ios,cocoa-touch,uitableview,Ios,Cocoa Touch,Uitableview,我在storybord和UISegmentedControl中有一个tableView,用不同的数据和不同的设计填充上面提到的表。我的问题是,当我切换UISegmentedControl时,Section meth中的rowsin数不起反应 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if(self.segment.selectedSegmentIndex==
- (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.
}
嗯,导航时nslog不起作用。在这种情况下如何返回NSInteger
提前准备好
编辑:shannoga
段控制器切换方法:
-(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所说,您应该在您的UISegmentedControl更改中使用
。如果您更改[tableview重载数据]
方法中的valueChanged
数组,并将self.items
numberofrowsin部分保留为不更改,则效果会更好,这样看起来会像这样:
- (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]; }
- (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所说,您应该在您的UISegmentedControl更改中使用
。如果您更改[tableview重载数据]
方法中的valueChanged
数组,并将self.items
numberofrowsin部分保留为不更改,则效果会更好,这样看起来会像这样:
- (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]; }
祝您好运更改UISegmentedControl的值后,您需要更新表。您可以使用
[tableView reloadData]轻松实现这一点
或者您可以使用类似于[tableView重新加载节:0 with TableViewAnimation:UITableViewRowAnimationAutomatic]代码>
最好的方法可能是为您的控件使用valueChanged方法
// Wherever you init your UISegmentedControl
segmentedControl addTarget:self selector:@selector(valueChanged:) forEvent:UIControlEventValueChanged];
- (void)valueChanged:(id)sender
{
[tableview reloadData];
}
更改UISegmentedControl的值后,需要更新表。您可以使用[tableView reloadData]轻松实现这一点
或者您可以使用类似于[tableView重新加载节:0 with TableViewAnimation:UITableViewRowAnimationAutomatic]代码>
最好的方法可能是为您的控件使用valueChanged方法
// Wherever you init your UISegmentedControl
segmentedControl addTarget:self selector:@selector(valueChanged:) forEvent:UIControlEventValueChanged];
- (void)valueChanged:(id)sender
{
[tableview reloadData];
}
当分段控件的选定段更改时,是否重新加载表?是的,在-(iAction)segmentValueChaged:(id)我调用的发送方方法[self.tableView reloadData];如前所述,您必须在返回之前移动NSLog调用。另外,您应该在这里使用if-else构造,而不是两个if.O.K,那么为什么不在这两种情况下使用1个数组“self.items”呢?当分段控件的选定段发生更改时,您是否重新加载表?是的,在-(iAction)segmentValueChaged:(id)sender方法中,我调用[self.tableView reloadData];如前所述,您必须在返回之前移动NSLog调用。此外,您应该在这里使用if-else构造,而不是两个if.O.K。那么,对于这两种情况,为什么不使用1个数组“self.items”作为示例呢?@shannoga是正确的。我认为最好的做法是将逻辑从numberOfRowsInSection
方法中去掉,并将其移动到实际发生交互的方法中。但是numberOfRowsInSection中的返回怎么办?我必须返回整数。我应该定义本地int-var并为其分配行的值并返回它吗?或者我可以返回0.Ah。是…返回[自我物品计数];如果使用相同的数组。@shannoga是对的。我认为最好的做法是将逻辑从numberOfRowsInSection
方法中去掉,并将其移动到实际发生交互的方法中。但是numberOfRowsInSection中的返回怎么办?我必须返回整数。我应该定义本地int-var并为其分配行的值并返回它吗?或者我可以返回0.Ah。是…返回[自我物品计数];如果使用相同的数组。