我正在开发一个带有动态单元格的UITableView的iOS故事板应用程序。我想要一个分段控件来确定哪种类型的单元格填充tableView内容。
这是viewController.m:
- (void)viewDidLoad
{
[super viewDidLoad];
[_reelsOrAllSegmentedControl addTarget:self
action:@selector(segmentedControlTouched)
forControlEvents:UIControlEventValueChanged];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier0 = @"cellType1";
NSString *CellIdentifier1 = @"cellType2";
long row = [indexPath row];
if([_segmentedControl isEnabledForSegmentAtIndex:0])
{
CellType1 *cell = [tableView
dequeueReusableCellWithIdentifier:CellIdentifier0
forIndexPath:indexPath];
NSArray *folderArray = [[NSArray alloc] initWithArray:[[UserSession sharedSession] userFolders]];
[[cell titleTextView] setText:(NSString*)folderArray[row][@"title"]];
else if([_segmentedControl isEnabledForSegmentAtIndex:1]){
CellType2 *cell = [tableView
dequeueReusableCellWithIdentifier:CellIdentifier1
forIndexPath:indexPath];
NSArray *postArray = [[NSArray alloc] initWithArray:[[UserSession sharedSession] userPosts]];
cell.captionTextView.text = postArray[row][@"caption"];
return cell;
}
-(void)segmentedControlTouched
{
NSLog(@"touch");
[self.tableView reloadData];
}
看起来非常简单,但每次切换分段控件时,都会运行'if'的第一个块。刷新表时不应该运行第二个吗?
谢谢, 杰森
答案 0 :(得分:1)
最好创建两个单独的类来实现UITableViewDataSource
,并在用户更改所选细分时适当地设置表格视图dataSource
。
但无论如何,您可以通过查看控件的selectedSegmentIndex
属性来使代码正常工作:
if(_segmentedControl.selectedSegmentIndex == 0) {
CellType1 *cell = [tableView
... etc.