使用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; }
这里有很好的教程来学习更多: