使用pickerView填充多个部分tableView

我有一个tableview的数据从一个pickerView(3列)中select。这里是代码:

- (void)viewDidLoad { [super viewDidLoad]; //PickerView content and sort them for displaying Number=@[@"Trans",@"2005",@"2006",@"2007",@"2008",@"2009",@"2010",@"2011",@"2012",@"2013",@"2014",@"2015",@"2016"]; Season=@[@"Spring",@"Summer",@"Fall"]; Course=@[@"CHEM1100 General Chem I",@"CHEM2100 General Chem II",@"CHEM3511 Org Chem",@"CHEM3521 Org Chem II"]; Course =[Course sortedArrayUsingSelector:@selector(compare:)]; Number =[Number sortedArrayUsingSelector:@selector(compare:)]; Season =[Season sortedArrayUsingSelector:@selector(compare:)]; _tableView.delegate = self; _tableView.dataSource = self; } 

为了填充tableView,我使用了一个button,当button被按下时,pickerView的select将把数据发送到tableView

 - (IBAction)addCourse:(UIButton *)sender { NSInteger numRow=[picker selectedRowInComponent:kNumComponent];//0=1st,1=2nd,etc NSInteger SeaRow=[picker selectedRowInComponent:kSeaComponent];//0=fall,1=spring,2=summer NSInteger CourseRow=[picker selectedRowInComponent:kCourseComponent]; NSString *num=Number[numRow]; NSString *season=Season[SeaRow]; NSString *course=Course[CourseRow]; NSString *CourseToAdd=[[NSString alloc ]initWithFormat:@"%@ ",course]; NSString *SeasonToAdd=[[NSString alloc ]initWithFormat:@"%@ ",season]; NSString *YearToAdd=[[NSString alloc ]initWithFormat:@"%@ ",num]; [self.msgCourse addObject:CourseToAdd]; [self.msgSeason addObject:SeasonToAdd]; [self.msgYear addObject:YearToAdd]; [_tableView reloadData]; } 

为了显示tableView中的数据,我使用

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = nil; cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"]; if(!cell){ cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"]; } cell.textLabel.text=[self.msgCourse objectAtIndex:indexPath.row]; return cell; } 

确定行和部分

 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ //return [self.msgYear count]; return 1; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return [self.msgCourse count]; } 

它运行良好。 输出显示在附图中。 这是我的问题:

(1)我想在多个部分显示tableView。 例如,“2005秋季”是一节,在本节内部,显示课程。 换句话说,select器视图中select的前两列将形成部分标题。

(2)如何对每个部分的结果进行sorting?

在这里输入图像说明

你可以在其中定义一些部分和行,如下所示:

 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // number of courses? return 3; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return ((section == 0) ? 1 : 3); } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // return appropriate cell(s) based on section if(indexPath.section == 0) { // Return 1 cell } else if(indexPath.section == 1) { switch(indexPath.row) { case 0: // Initialize cell 1 break; case 1: // Initialize cell 2 break; ... } } return cell; } 

这里有很好的教程来学习更多: