首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

UIPopoverController的使用,看着很不简单的样子

2013-10-08 
UIPopoverController的使用,看着很牛逼的样子先看看这个图要做的样子就是点击下面这个按钮,弹出上面这个带

UIPopoverController的使用,看着很牛逼的样子

先看看这个图

UIPopoverController的使用,看着很不简单的样子

要做的样子就是点击下面这个按钮,弹出上面这个带箭头的弹出框

下面来看看怎么搞

- (void)viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view from its nib.        isChelsea = NO;        //添加完成按钮    UISegmentedControl* doneButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Done", nil]];    [doneButton setSegmentedControlStyle:UISegmentedControlStyleBar];    [doneButton setFrame:CGRectMake(self.view.bounds.origin.x+self.view.bounds.size.width-100, self.view.bounds.origin.y+5, 75, 50)];    [doneButton addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];    [self.view addSubview:doneButton];    [doneButton release];    //添加选择项    UISegmentedControl* clubSeg = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Chelsea",@"AC Milan",@"Livupoor",@"Asenal",nil]];    [clubSeg setSegmentedControlStyle:UISegmentedControlStyleBar];    [clubSeg setFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+75,self.view.bounds.size.width,50)];  [clubSeg addTarget:self action:@selector(chooseClub:) forControlEvents:UIControlEventValueChanged];[self.view addSubview:clubSeg];    [clubSeg release];        //添加选择列表    UIPickerView* picker = [[UIPickerView alloc] initWithFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+150, self.view.bounds.size.width,self.view.bounds.size.height)];    [picker setBounds:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+75, self.view.bounds.size.width,self.view.bounds.size.height)];    picker.delegate = self;    picker.dataSource = self;    picker.showsSelectionIndicator = YES;    [self.view addSubview:picker];    [picker setTag:101];    [picker release];}-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{    return 1;}-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{    return 12;}-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{    if (isChelsea) {        return [NSString stringWithCString:chelsea[row] encoding:NSUTF8StringEncoding];    }else{        return [NSString stringWithFormat:@"chelsea_%d",arc4random()%12];        ;    }    }-(void)segmentAction:(UISegmentedControl*)seg{    [self.view removeFromSuperview];  [self.popover dismissPopoverAnimated:YES];}-(void)chooseClub:(UISegmentedControl*)seg{    NSInteger index = seg.selectedSegmentIndex;    UIPickerView* picker = (UIPickerView*)[self.view viewWithTag:101];    switch (index) {        case 0:{            NSLog(@"you choose Chelsea");            isChelsea = YES;            [picker reloadAllComponents];            break;        }        case 1:            NSLog(@"you choose AC Milan");            isChelsea = NO;            [picker reloadAllComponents];        case 2:            NSLog(@"you choose Livopoor");            isChelsea = NO;            [picker reloadAllComponents];        case 3:            NSLog(@"you choose Asenal");            isChelsea = NO;            [picker reloadAllComponents];        default:            break;    }}@end@property(nonatomic,retain)UIPopoverController* popover;@end#import <UIKit/UIKit.h>@interface UIActionSheetDemoViewController : UIViewController<UIPopoverControllerDelegate>{    UIPopoverController* _popover;}#import "UIActionSheetDemoViewController.h"#import "popController.h"@implementation UIActionSheetDemoViewController@synthesize popover = _popover;- (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.}#pragma mark - View lifecycle// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.- (void)viewDidLoad{    [super viewDidLoad];        UISegmentedControl* settingView = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"FootballCF",@"BasketballCF",nil]];    [settingView setSegmentedControlStyle:UISegmentedControlStyleBar];    [settingView setFrame:CGRectMake(500, 900, 160, 75)];    [settingView setNeedsLayout];    [settingView addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];    [self.view addSubview:settingView];    [settingView release];}- (void)viewDidUnload{    [super viewDidUnload];    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;        if (self.popover != nil) {        [self.popover release];        self.popover = nil;    }}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{    // Return YES for supported orientations    return YES;}-(void)segmentAction:(UISegmentedControl*)seg{    //清除已经显示的弹出窗口    if (self.popover.popoverVisible) {        [self.popover dismissPopoverAnimated:YES];    }    //初始化待显示控制器    popController* controller = [[popController alloc] init];    //设置待显示控制器的范围    [controller.view setFrame:CGRectMake(550, 490, 350, 450)];    //设置待显示控制器视图的尺寸    controller.contentSizeForViewInPopover = CGSizeMake(350, 450);    //初始化弹出窗口    UIPopoverController* pop = [[UIPopoverController alloc] initWithContentViewController:controller];    controller.popover = pop;    self.popover = pop;    self.popover.delegate = self;    //设置弹出窗口尺寸    self.popover.popoverContentSize = CGSizeMake(350, 450);        //显示,其中坐标为箭头的坐标以及尺寸    [self.popover presentPopoverFromRect:CGRectMake(550, 890, 10, 10) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:NO];        [controller release];    [pop release];        //[self.popover dismissPopoverAnimated:YES];}-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController{    NSLog(@"popover dismiss");}@end#import <UIKit/UIKit.h>@interface popController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource>{    UIPopoverController* _popover;    BOOL isChelsea;}@property(nonatomic,retain)UIPopoverController* popover;@end#import "popController.h"@implementation popController@synthesize popover = _popover;//定义选项显示内容const char* chelsea[12] = {"博阿斯","切赫","阿什利科尔","特里","路易斯","伊万诺维奇","兰帕德","拉米雷斯","梅来雷斯","阿内尔卡","德罗巴","托雷斯"};- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];    if (self) {        // Custom initialization                  }    return self;}- (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.}#pragma mark - View lifecycle- (void)viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view from its nib.        isChelsea = NO;        //添加完成按钮    UISegmentedControl* doneButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Done", nil]];    [doneButton setSegmentedControlStyle:UISegmentedControlStyleBar];    [doneButton setFrame:CGRectMake(self.view.bounds.origin.x+self.view.bounds.size.width-100, self.view.bounds.origin.y+5, 75, 50)];    [doneButton addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];    [self.view addSubview:doneButton];    [doneButton release];    //添加选择项    UISegmentedControl* clubSeg = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Chelsea",@"AC Milan",@"Livupoor",@"Asenal",nil]];    [clubSeg setSegmentedControlStyle:UISegmentedControlStyleBar];    [clubSeg setFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+75,self.view.bounds.size.width,50)];  [clubSeg addTarget:self action:@selector(chooseClub:) forControlEvents:UIControlEventValueChanged];[self.view addSubview:clubSeg];    [clubSeg release];        //添加选择列表    UIPickerView* picker = [[UIPickerView alloc] initWithFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+150, self.view.bounds.size.width,self.view.bounds.size.height)];    [picker setBounds:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+75, self.view.bounds.size.width,self.view.bounds.size.height)];    picker.delegate = self;    picker.dataSource = self;    picker.showsSelectionIndicator = YES;    [self.view addSubview:picker];    [picker setTag:101];    [picker release];}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{    // Return YES for supported orientations    return YES;}-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{    return 1;}-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{    return 12;}-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{    if (isChelsea) {        return [NSString stringWithCString:chelsea[row] encoding:NSUTF8StringEncoding];    }else{        return [NSString stringWithFormat:@"chelsea_%d",arc4random()%12];        ;    }    }-(void)segmentAction:(UISegmentedControl*)seg{    [self.view removeFromSuperview];  [self.popover dismissPopoverAnimated:YES];}-(void)chooseClub:(UISegmentedControl*)seg{    NSInteger index = seg.selectedSegmentIndex;    UIPickerView* picker = (UIPickerView*)[self.view viewWithTag:101];    switch (index) {        case 0:{            NSLog(@"you choose Chelsea");            isChelsea = YES;            [picker reloadAllComponents];            break;        }        case 1:            NSLog(@"you choose AC Milan");            isChelsea = NO;            [picker reloadAllComponents];        case 2:            NSLog(@"you choose Livopoor");            isChelsea = NO;            [picker reloadAllComponents];        case 3:            NSLog(@"you choose Asenal");            isChelsea = NO;            [picker reloadAllComponents];        default:            break;    }}@end@property(nonatomic,retain)UIPopoverController* popover;@end#import <UIKit/UIKit.h>@interface UIActionSheetDemoViewController : UIViewController<UIPopoverControllerDelegate>{    UIPopoverController* _popover;}#import "UIActionSheetDemoViewController.h"#import "popController.h"@implementation UIActionSheetDemoViewController@synthesize popover = _popover;- (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.}#pragma mark - View lifecycle// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.- (void)viewDidLoad{    [super viewDidLoad];        UISegmentedControl* settingView = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"FootballCF",@"BasketballCF",nil]];    [settingView setSegmentedControlStyle:UISegmentedControlStyleBar];    [settingView setFrame:CGRectMake(500, 900, 160, 75)];    [settingView setNeedsLayout];    [settingView addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];    [self.view addSubview:settingView];    [settingView release];}- (void)viewDidUnload{    [super viewDidUnload];    // Release any retained subviews of the main view.    // e.g. self.myOutlet = nil;        if (self.popover != nil) {        [self.popover release];        self.popover = nil;    }}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{    // Return YES for supported orientations    return YES;}-(void)segmentAction:(UISegmentedControl*)seg{    //清除已经显示的弹出窗口    if (self.popover.popoverVisible) {        [self.popover dismissPopoverAnimated:YES];    }    //初始化待显示控制器    popController* controller = [[popController alloc] init];    //设置待显示控制器的范围    [controller.view setFrame:CGRectMake(550, 490, 350, 450)];    //设置待显示控制器视图的尺寸    controller.contentSizeForViewInPopover = CGSizeMake(350, 450);    //初始化弹出窗口    UIPopoverController* pop = [[UIPopoverController alloc] initWithContentViewController:controller];    controller.popover = pop;    self.popover = pop;    self.popover.delegate = self;    //设置弹出窗口尺寸    self.popover.popoverContentSize = CGSizeMake(350, 450);        //显示,其中坐标为箭头的坐标以及尺寸    [self.popover presentPopoverFromRect:CGRectMake(550, 890, 10, 10) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:NO];        [controller release];    [pop release];        //[self.popover dismissPopoverAnimated:YES];}-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController{    NSLog(@"popover dismiss");}@end#import <UIKit/UIKit.h>@interface popController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource>{    UIPopoverController* _popover;    BOOL isChelsea;}@property(nonatomic,retain)UIPopoverController* popover;@end#import "popController.h"@implementation popController@synthesize popover = _popover;//定义选项显示内容const char* chelsea[12] = {"博阿斯","切赫","阿什利科尔","特里","路易斯","伊万诺维奇","兰帕德","拉米雷斯","梅来雷斯","阿内尔卡","德罗巴","托雷斯"};- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];    if (self) {        // Custom initialization                  }    return self;}- (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.}#pragma mark - View lifecycle- (void)viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view from its nib.        isChelsea = NO;        //添加完成按钮    UISegmentedControl* doneButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Done", nil]];    [doneButton setSegmentedControlStyle:UISegmentedControlStyleBar];    [doneButton setFrame:CGRectMake(self.view.bounds.origin.x+self.view.bounds.size.width-100, self.view.bounds.origin.y+5, 75, 50)];    [doneButton addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];    [self.view addSubview:doneButton];    [doneButton release];    //添加选择项    UISegmentedControl* clubSeg = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Chelsea",@"AC Milan",@"Livupoor",@"Asenal",nil]];    [clubSeg setSegmentedControlStyle:UISegmentedControlStyleBar];    [clubSeg setFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+75,self.view.bounds.size.width,50)];  [clubSeg addTarget:self action:@selector(chooseClub:) forControlEvents:UIControlEventValueChanged];[self.view addSubview:clubSeg];    [clubSeg release];        //添加选择列表    UIPickerView* picker = [[UIPickerView alloc] initWithFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+150, self.view.bounds.size.width,self.view.bounds.size.height)];    [picker setBounds:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y+75, self.view.bounds.size.width,self.view.bounds.size.height)];    picker.delegate = self;    picker.dataSource = self;    picker.showsSelectionIndicator = YES;    [self.view addSubview:picker];    [picker setTag:101];    [picker release];        }- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{    // Return YES for supported orientations    return YES;}-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{    return 1;}-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{    return 12;}-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{    if (isChelsea) {        return [NSString stringWithCString:chelsea[row] encoding:NSUTF8StringEncoding];    }else{        return [NSString stringWithFormat:@"chelsea_%d",arc4random()%12];        ;    }    }-(void)segmentAction:(UISegmentedControl*)seg{    [self.view removeFromSuperview];  [self.popover dismissPopoverAnimated:YES];}-(void)chooseClub:(UISegmentedControl*)seg{    NSInteger index = seg.selectedSegmentIndex;    UIPickerView* picker = (UIPickerView*)[self.view viewWithTag:101];    switch (index) {        case 0:{            NSLog(@"you choose Chelsea");            isChelsea = YES;            [picker reloadAllComponents];            break;        }        case 1:            NSLog(@"you choose AC Milan");            isChelsea = NO;            [picker reloadAllComponents];        case 2:            NSLog(@"you choose Livopoor");            isChelsea = NO;            [picker reloadAllComponents];        case 3:            NSLog(@"you choose Asenal");            isChelsea = NO;            [picker reloadAllComponents];        default:            break;    }}@end





热点排行