Следует иметь в виду, что это будет контроллер представления, который настроит представление оповещения, которое представит представление выбора, а не само оповещение.Чтобы сделать это, контроллер представления должен настроить себя как делегат представления предупреждения.Я создал очень простое приложение на основе представлений, чтобы показать это, и вот код для корневого контроллера представления:
//
// 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
Я надеюсь, чтоэто будет работать для вас.