使用pickerView填充多个节tableView [英] Populating multiple sections tableView using pickerView
问题描述
我有一个tableview,其数据是从pickerView(3列)中选择的.下面是代码:
I have a tableview whose data are selected from a pickerView(3 columns).Here is the code:
- (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,我使用一个按钮,当按下按钮时,选择pickerView会将数据发送到tableView
To populate the tableView, I use a button, when the button is pushed, the selection of pickerView will send data to 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显示数据,我使用
To show the data in tableView, I use
-(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];
}
运行正常.输出如所附图片所示. 这是我的问题:
It is running fine. The output is shown in the picture attached. Here are my questions:
(1)我希望tableView在多个部分中显示.例如,"2005年秋季"是一个部分,在此部分中,显示了课程.换句话说,在pickerview中选择的前两列将构成部分标题.
(1) I want the tableView shown in more than one sections. For example, "2005 Fall" is one section, inside this section, the courses are shown. In other words, the first two columns selected in the pickerview will form the section title.
(2)如何对每个部分的结果进行排序?
(2) How to sort the results in each section?
推荐答案
您可以在其中定义节和行的数量,如下所示:
You could define number of sections and rows in it as following:
-(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;
}
这是学习更多内容的好教程:
Here are the good tutorials to learn more:
- http://www.appcoda.com/ios-programming-index -list-uitableview/
- http://briterideas.blogspot. com/2012/07/uitableview-how-to-part-3-multiple.html
- https://owenandrewsblog.wordpress.com/2012/01 /29/uitableview-sections-tutorial/
- http://www.appcoda.com/ios-programming-index-list-uitableview/
- http://briterideas.blogspot.com/2012/07/uitableview-how-to-part-3-multiple.html
- https://owenandrewsblog.wordpress.com/2012/01/29/uitableview-sections-tutorial/
这篇关于使用pickerView填充多个节tableView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!