在PickerView选择行上移动到另一个视图

时间:2014-08-30 04:55:07

标签: ios objective-c xcode uipickerview

我有一个已经存在值的选择器视图,例如其中一个内容是天气,我有一个与选择器视图一起工作的按钮,所以当你选择天气并按下按钮时会弹出一个警告并说欢迎到X.你选择了天气,而不是你推OK以删除警报,我想知道是否有可能在你按下OK后它会带你到有天气的视图控制器。我从来没有见过这样做,这是一个多功能的应用程序,在选择器上还有大约6或7个其他项目,所以如果有人可以帮助那将是伟大的:这是我的代码。顺便说一下,如果我没有代码块,我很不熟悉网站。

- (void)viewDidLoad
{
    NSArray *data = [[NSArray alloc] initWithObjects:@"Weather", @"Calendar", @"Facebook", @"Twitter", @"Instagram",@"Tasks" ,nil];
    self.array = data;


    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}


#pragma marks Picker Data Source Methods

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {

    return [_array count];
}

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {

    return 1;
}

#pragma mark Picker Delegate Methods

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

    return [_array objectAtIndex:row];
}

- (IBAction)ButtonPressed:(id)sender {

    NSString *select = [_array objectAtIndex:[_picker selectedRowInComponent:0]];

    NSString *title = [ [NSString alloc] initWithFormat:@"You selected %@!" , select];

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:@"Welcome To One" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];

    [alert show];


}

3 个答案:

答案 0 :(得分:2)

你必须像bellow一样需要为UIAlertView提供标签,否则它会在每个UIAlertView点击上推送视图

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:  (NSInteger)component
{
    NSString *select    = [_array objectAtIndex:component];
    NSString *title     = [ [NSString alloc] initWithFormat:@"You selected %@!" , select];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:@"Welcome To One" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
    alert.tag = 1001;
    alert.delegate = self;
    [alert show];
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (alertView.tag == 1001)
    {
        [self.navigationController performSegueWithIdentifier:@"Identifier" sender:nil];
    }
}

答案 1 :(得分:1)

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
// Show alert here

    [[[UIAlertView alloc]
              initWithTitle:@"" message:@"Alert Message"
              delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]

             show];

}

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
    UIStoryboard * storyboard = self.storyboard;

        ViewController * detail = [storyboard instantiateViewControllerWithIdentifier: @"YourViewControlller"];

        [self.navigationController pushViewController: detail animated: YES];

}
}

答案 2 :(得分:0)

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:  (NSInteger)component
{
    NSString *select = [_array objectAtIndex:component];
    NSString *title = [ [NSString alloc] initWithFormat:@"You selected %@!" , select];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:@"Welcome To One" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
    alert.delegate = self;
    [alert show];
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0)
    {
    [self.navigationController performSegueWithIdentifier:@"Identifier" sender:nil];
    }
}