简体   繁体   English

在uipickerview中显示选定的值

[英]Display the selected value in uipickerview

I had a uipickerview in my detailed page. 我的详细页面中有一个uipickerview。 I want to get the value selected by default when I edit the respective record which comes from my tableviewcell. 当我编辑来自tableviewcell的相应记录时,我想获取默认选择的值。 In short I had a tableview with 10 records. 简而言之,我有一张包含10条记录的表格视图。 When I select a record from tableview cell it navigates to detailed page which contains three picker views with one component each. 当我从tableview单元格中选择一条记录时,它将导航到详细页面,该页面包含三个选择器视图,每个视图都有一个组件。 I want the picker view to load the selected value by default. 我希望选择器视图默认加载选定的值。 Here is the below code how Iam loading the data. 这是下面的代码,我是如何加载数据的。 How can I display the selected value in -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row and one more thing is I am using UINavigationcontroller for this page? 如何在-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)行中显示选定的值,还有一件事是我正在为此页面使用UINavigationcontroller吗? Guys Can u please help me out 你们可以帮帮我吗

-(void)loadprojects
{
    NSString *post =[[NSString alloc] initWithFormat:@"username=%@",[self.projectpicker dataSource]];
    //NSString *pickername = [self.projectpicker dataSource];
    //NSString *key = @"Da9s^a2Rp4na6R$ikiAsav3Is@niWsa";

    //NSString *encrypteduname = [AESCrypt encrypt:pickername password:key];

    // Code for Project loading
    NSString *projecturltemp = @"http://xxx.xxx/GetAssignedProjects";
    NSString *str = [[NSUserDefaults standardUserDefaults] valueForKey:@"UserLoginIdSession"];
    NSString *usrid = str;
    NSString * projecturl =[NSString stringWithFormat:@"%@/%@",projecturltemp,usrid];


    NSURL *url = [NSURL URLWithString:projecturl];

    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];




    NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:url];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/projectpicker" forHTTPHeaderField:@"Accept"];
    [request setValue:@"application/jsonArray" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:postData];


    NSError *error = [[NSError alloc] init];
    NSHTTPURLResponse *response = nil;
    NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url
                                                cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                            timeoutInterval:30];


    // Make synchronous request
    urlData = [NSURLConnection sendSynchronousRequest:urlRequest
                                    returningResponse:&response
                                                error:&error];
    if ([response statusCode] >= 200 && [response statusCode] < 300)
    {
        NSString *responseData = [NSJSONSerialization JSONObjectWithData:urlData
                                                                 options:NSJSONReadingAllowFragments error:&error];

        NSArray *entries = [NSJSONSerialization JSONObjectWithData:[responseData dataUsingEncoding:NSUTF8StringEncoding]
                                                           options:0 error:&error];
        if(!entries)
        {
            NSLog(@"Error : %@", error);
        }
        else{

            for (NSDictionary *entry in entries) {
                projID = [entries valueForKey:@"ID_PROJECT"];
                projectNames = [entries valueForKey:@"NM_PROJECT"];
            }
            randomSelection=[BenefitNames arrayByAddingObjectsFromArray:projectNames];
            randomSelectionID = [benID arrayByAddingObjectsFromArray:projID];
            _projectpicker.delegate = self;
            _projectpicker.dataSource = self;
        }

    }       else {

    }
}


-(void)loaddata
{
    NSString *eventDate = self.projidstocancel;
    [[NSUserDefaults standardUserDefaults] setObject:eventDate forKey:@"Eventdate"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    NSString *post =[[NSString alloc] initWithFormat:@"username : %@&Password :%@",[self.projectpicker dataSource],[self.projectpicker delegate]];
    //NSString *pickername = [self.projectpicker dataSource];
    //NSString *key = @"Da9s^a2Rp4na6R$ikiAsav3Is@niWsa";

    //NSString *encrypteduname = [AESCrypt encrypt:pickername password:key];

    // Code for Project loading
    NSString *projecturltemp = @"http://xxx.xxxx/GetDetailsByID";
    NSString *str = [[NSUserDefaults standardUserDefaults] valueForKey:@"UserLoginIdSession"];
    NSString *usrid = str;
    NSString * projecturl =[NSString stringWithFormat:@"%@/%@",projecturltemp,self.hdnRowcount];
    NSURL *url = [NSURL URLWithString:projecturl];


    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];




    NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:url];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/projectpicker" forHTTPHeaderField:@"Accept"];
    [request setValue:@"application/jsonArray" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:postData];


    NSError *error = [[NSError alloc] init];
    NSHTTPURLResponse *response = nil;
    NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url
                                                cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                            timeoutInterval:30];


    // Make synchronous request
    urlData = [NSURLConnection sendSynchronousRequest:urlRequest
                                    returningResponse:&response
                                                error:&error];
    if ([response statusCode] >= 200 && [response statusCode] < 300)
    {
        NSString *responseData = [NSJSONSerialization JSONObjectWithData:urlData
                                                                 options:NSJSONReadingAllowFragments error:&error];

        NSArray *entries = [NSJSONSerialization JSONObjectWithData:[responseData dataUsingEncoding:NSUTF8StringEncoding]
                                                           options:0 error:&error];
        if(!entries)
        {
            NSLog(@"Error : %@", error);
        }
        else{

            for (NSDictionary *entry in entries) {
                projectNames = [entries valueForKey:@"NM_PROJECT"];
                taskNames = [entries valueForKey:@"TASk_NAME"];
                subtaskNames = [entries valueForKey:@"SUBTASK_NAME"];
                hdnlblProjects.text = [[entries valueForKey:@"NM_PROJECT"]componentsJoinedByString:@""];
                hdnlblTasks.text = [[entries valueForKey:@"TASk_NAME"]componentsJoinedByString:@""];
                hdnlblSubTasks.text = [[entries valueForKey:@"SUBTASK_NAME"]componentsJoinedByString:@""];
                txthours.text = [[entries valueForKey:@"No_Hours"]componentsJoinedByString:@""];
                txtstatus.text = [[entries valueForKey:@"STATUS"]componentsJoinedByString:@""];
                lblBenefitsLeaves.text = [[entries valueForKey:@"NM_LEAVE"]componentsJoinedByString:@""];
                BenefitNames = [entries valueForKey:@"NM_LEAVE"];
                projID = [entries valueForKey:@"ID_PROJECT"];
                taskID = [entries valueForKey:@"ID_TASK"];
                subtskID = [entries valueForKey:@"ID_SUB_TASK"];
            }
            lblProjects.text = [[projID valueForKey:@"description"] componentsJoinedByString:@""];
            taskstring = [[taskID valueForKey:@"description"] componentsJoinedByString:@""];
            subtaskstring = [[subtskID valueForKey:@"description"] componentsJoinedByString:@""];
            bentest = [[BenefitNames valueForKey:@"description"] componentsJoinedByString:@""];
            hrsdiff1 = [txthours.text floatValue];
        }

    }       else {

    }
}

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    int numberofRows = 0;
    if([pickerView isEqual: _projectpicker]){
        numberofRows = [randomSelection count];
        return numberofRows;
    }
    else if([pickerView isEqual: _taskspicker]){
        numberofRows = [taskNames count];
        return numberofRows;
    }
    else if([pickerView isEqual: _subtaskspicker]){
        numberofRows = [subtaskNames count];
        return numberofRows;
    }
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    NSString *title = @"Test";
    if([pickerView isEqual: _projectpicker]){
        title = [randomSelection objectAtIndex:row];
        return title;
    }

    else if ([pickerView isEqual: _taskspicker]){
        title = [taskNames objectAtIndex:row];
        return title;
    }
    else if ([pickerView isEqual: _subtaskspicker]){
        title = [subtaskNames objectAtIndex:row];
        return title;
    }

}

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    //NSLog(@"%@",myArrayString);
    //NSLog(@"%@",myTaskArrayString);
   if([pickerView isEqual: _projectpicker]){
        NSNumber *myProjectArrayString = [randomSelectionID objectAtIndex:row];
        lblProjects.text = [NSString stringWithFormat:@"%@",myProjectArrayString];
        lblProjects.hidden = YES;
        lblBenefitsLeaves.text = [randomSelection objectAtIndex:row];
        hdnlblProjects.text = [randomSelection objectAtIndex:row];
        rownoedit = row;
       lblTasks.text = @"0";
       hdnlblTasks.text = @"--Select--";
       lblSubTasks.text = @"0";
       hdnlblSubTasks.text = @"--Select--";
        [self loadtasks];

    }
    //lblProjects.hidden = YES;
    else if([pickerView isEqual: _taskspicker])
    {
        NSNumber *myTaskArrayString = [taskID objectAtIndex:row];
        lblTasks.text = [NSString stringWithFormat:@"%@",myTaskArrayString];
        lblTasks.hidden = YES;
        hdnlblTasks.text = [taskNames objectAtIndex:row];
        lblSubTasks.text = @"0";
        hdnlblSubTasks.text = @"--Select--";
        [self loadsubtasks];

    }
    else if([pickerView isEqual: _subtaskspicker])
    {
        NSNumber *mysubtaskArrayString = [subtskID objectAtIndex:row];
        lblSubTasks.text = [NSString stringWithFormat:@"%@",mysubtaskArrayString];
        lblSubTasks.hidden = YES;
        hdnlblSubTasks.text = [subtaskNames objectAtIndex:row];

        //lblTasks.text = [taskNames objectAtIndex:[pickerView selectedRowInComponent:1]];
        //lblTasks.text = [NSString stringWithFormat:@"%@", myTaskArrayString];
        //lblSubTasks.text = [subtaskNames objectAtIndex:[pickerView selectedRowInComponent:2]];
    }
}

First define a static variable and give it initial value you like to first on load 首先定义一个静态变量,并给它一个您希望在加载时首先使用的初始值

ex : static int selectedRow = 3 例如: static int selectedRow = 3

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:
(NSInteger)row inComponent:(NSInteger)component{
selectedRow = [pickerView selectedRowInComponent:0];

} }

and then where you show pickerView place this line 然后在显示pickerView的位置放置此行

  [self selectRow:selectedRow inComponent:0 animated:YES];

Try with following code 尝试以下代码

[self.yourPickerViewName selectRow:self.valueName inComponent:0 animated:YES];

Where 哪里

self.valueName is value that select record from tableview cell. self.valueName是从表视图单元格中选择记录的值。 and Put above code after creation of your UIPickerView. 在创建UIPickerView.之后,将上面的代码放入UIPickerView.

You can refer this to fetch selected value from pickerview 您可以引用它来从pickerview获取选定的值

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    if([pickerView isEqual:StatePicker])
    {
      stateName = [StateArray objectAtIndex:row]; //StateName is NSString, StateArray is Array
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM