Populating multiple sections tableView using pickerView

旧时模样 提交于 2019-12-12 03:07:48

问题


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;

}

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];
}

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;

}

To determine the rows and sections

-(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) 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) How to sort the results in each section?


回答1:


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/


来源:https://stackoverflow.com/questions/29496839/populating-multiple-sections-tableview-using-pickerview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!