UISegmentedControl确定Dynamic UITableView的内容

时间:2014-09-16 23:39:13

标签: ios uitableview reloaddata

我正在开发一个带有动态单元格的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'的第一个块。刷新表时不应该运行第二个吗?

谢谢, 杰森

1 个答案:

答案 0 :(得分:1)

最好创建两个单独的类来实现UITableViewDataSource,并在用户更改所选细分时适当地设置表格视图dataSource

但无论如何,您可以通过查看控件的selectedSegmentIndex属性来使代码正常工作:

if(_segmentedControl.selectedSegmentIndex == 0) {
    CellType1 *cell = [tableView
    ... etc.