如何使用UISegmentedControl动作在一个UITableView中处理两个自定义单元格?

时间:2016-02-12 11:55:53

标签: ios objective-c uitableview uisegmentedcontrol custom-cell

您好我是iOS和SO的新手。我在我的应用程序中遇到一个问题,即在一个tableview中显示两个自定义单元格并选择分段控件。当用户单击segmented = 0时,它会显示一个自定义单元格,segmented = 1显示第二个自定义单元格。 这是我现在尝试的代码,

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return array.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (value1 == 0)
{
static NSString *cellId = @"Cell";
Cell1 * cell = (Cell1 *)[myTableView dequeueReusableCellWithIdentifier:cellId];
        if (cell == nil)
        {
        NSArray *myNib;
        myNib = [[NSBundle mainBundle]loadNibNamed:@"Cell1" owner:self options:nil];
        cell = [myNib lastObject];
}
    cell.examLbl.text = [[array objectAtIndex:indexPath.row]objectForKey:@"examtitle"];
    myTableView.dataSource = self;
    myTableView.delegate = self;
    [myTableView reloadData];

    return cell;
}
else
{
    if (value1 == 1)
    {
        static NSString * cellIdentifier = @"Cell2";
        Cell2 *cell = (ContestRewardCell *)[myTableView dequeueReusableCellWithIdentifier:cellIdentifier];
        if (cell == nil)
        {
            NSArray *myNib;
            myNib = [[NSBundle mainBundle]loadNibNamed:@"cell2" owner:self options:nil];
            cell =[myNib objectAtIndex:0];
        }
        cell.titleLbl.text = [[array objectAtIndex:indexPath.row]objectForKey:@"title"];
        myTableView.dataSource = self;
        myTableView.delegate = self;
        [myTableView reloadData];
        return cell;
    }
}
return nil;
}

这是我的tableview委托方法

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (value1 == 0)
{
    return 102;
}
else if(value1 == 1)
{
    return 193;
}
return 0;
}

在这段代码中没有错误,我检查调试模式数据将来到" cell.examLbl.text"但是没有在tableview中显示自定义单元格。我在这段代码中做错了帮助我任何人。 提前谢谢。

这是我的问题的答案,我没有实现这个

split(',')

1 个答案:

答案 0 :(得分:0)

您需要先在viewDid load

中注册单元格nib

[YourTableView registerNib:[UINib nibWithNibName:@“YourCellNibName” bundle:nil] forCellReuseIdentifier:@“Identifier”];

然后使用cellForRowAtIndexPath中的单元格

示例:

-(void)viewDidLoad
{
[super viewDidLoad];
[TableView registerNib:[UINib nibWithNibName:@“MyTableViewCell” bundle:nil]forCellReuseIdentifier:@"cell"];
}


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

 MyTableViewCell *cell = (MyTableViewCell *)[myTableView      dequeueReusableCellWithIdentifier:@"cell”];

 cell.labelTitle=@"cell”;

 return cell;


}