Запустить UIPicker из кнопки UIAlert - PullRequest
0 голосов
/ 02 апреля 2011

Это, кажется, самая сложная вещь для меня. Как запустить UIPicker с помощью кнопки UIAlert. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 02 апреля 2011

Следует иметь в виду, что это будет контроллер представления, который настроит представление оповещения, которое представит представление выбора, а не само оповещение.Чтобы сделать это, контроллер представления должен настроить себя как делегат представления предупреждения.Я создал очень простое приложение на основе представлений, чтобы показать это, и вот код для корневого контроллера представления:

//
//  PickerAlertViewController.h
//  PickerAlert
//

#import <UIKit/UIKit.h>

@interface PickerAlertViewController : UIViewController <UIAlertViewDelegate>
{
}

- (IBAction) pickerButtonAction;

@end

и

//  PickerAlertViewController.m
//  PickerAlert
//

#import "PickerAlertViewController.h"

@implementation PickerAlertViewController

- (IBAction) pickerButtonAction
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Pick Something" 
                                                    message: @"Touch 'Cancel' if you don't wish to make a selection." 
                                                   delegate: self 
                                          cancelButtonTitle: @"Cancel"
                                          otherButtonTitles: @"Picker", nil];
    [alert show];
    [alert release];

}

#pragma mark -
#pragma mark Alert View Delegate Method

- (void) alertView: (UIAlertView *) actionSheet clickedButtonAtIndex: (NSInteger) buttonIndex
{
    if ( buttonIndex == 0)
    {
        NSLog( @"Cancelled");
        // Nothing left to do since the alert has been dismissed.
    }
    else
    {
        NSLog( @"Picker Button selected.");
        // Set up a picker view either programmatically or load from a nib then either
        //  push it on to the navigation stack or present it modaly.
    }
}

#pragma mark -
#pragma mark View Controller Memory Management

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [super dealloc];
}

@end

Я добавил кнопку в Интерфейсный конструктор и подключил еек методу «pickerButtonAction».В заголовочном файле я указал, что «PickerAlertViewController» будет придерживаться протокола UIAlertViewDelegate.

Когда оповещение настроено, его делегату присваивается значение self.Метод делегата, который я использовал для получения выбора пользователя:

  • (void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) buttonIndex

Я надеюсь, чтоэто будет работать для вас.

...