UIPopoverController的使用
2011-10-04 13:41

有些时候需要用到弹出窗口,这个时候UIPopoverController就有用武之地了,下面介绍一个使用UIPopoverController的示例,以供参考。实现效果如下:

为了实现这一效果并使用UIPopoverController,这里搞了两个controller,具体定义如下。

//  Created by Chelsea Wang 4209898762 on 11-10-4.

//  Copyright 2011年 __MyCompanyName__. All rights reserved.

#import <UIKit/UIKit.h>

@interface UIActionSheetDemoViewController : UIViewController<UIPopoverControllerDelegate>{

UIPopoverController* _popover;

}

//  UIActionSheetDemoViewController.m

//  UIActionSheetDemo

//

//  Created by Chelsea Wang 4209898762 on 11-10-4.

//  Copyright 2011年 __MyCompanyName__. All rights reserved.

//

#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:[NSArrayarrayWithObjects:@"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.viewpermittedArrowDirections:UIPopoverArrowDirectionDown animated:NO];

[controller release];

[pop release];

//[self.popover dismissPopoverAnimated:YES];

}

-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController{

NSLog(@"popover dismiss");

}

@end

//

//  popController.h

//  UIActionSheetDemo

//

//  Created by Chelsea Wang 4209898762 on 11-10-4.

//  Copyright 2011年 __MyCompanyName__. All rights reserved.

//

#import <UIKit/UIKit.h>

@interface popController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource>{

UIPopoverController* _popover;

BOOL isChelsea;

}

@property(nonatomic,retain)UIPopoverController* popover;

@end

//  popController.m

//  UIActionSheetDemo

//

//  Created by Chelsea Wang 4209898762 on 11-10-4.

//  Copyright 2011年 __MyCompanyName__. All rights reserved.

//

#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:[NSArrayarrayWithObjects:@"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:[NSArrayarrayWithObjects:@"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];

}

- (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;

}

-(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

UIPopoverController的使用相关推荐

  1. UIPopoverController在ARC环境下用法注意

    在ARC环境下如果便用以下代码: [cpp] view plaincopyprint? UIViewController *viewTwo; viewTwo = [[ViewTwo alloc] in ...

  2. iOS:弹出窗控制器:UIPopoverController

    弹出窗控制器:UIPopoverController 截图: 实质:就是将内容控制器包装成popoverController的形式,然后在模态出来,必须给定指向目标(target.frame).   ...

  3. UIPopoverController简介

    1, performSegueWithIdentifier:sender:跳转或弹出控制器 Identifier为popoverSegue时候,Sender仅限于UIBarbuttonItem与Vie ...

  4. iPad开发 - UIPopoverController控制器

    iPad简介 什么是iPad 一款苹果公司于2010年发布的平板电脑 定位介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 iPad的市场情况 截止至20 ...

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

    先看看这个图 要做的样子就是点击下面这个按钮,弹出上面这个带箭头的弹出框 下面来看看怎么搞 #import <UIKit/UIKit.h>@interface UIActionSheetD ...

  6. 【转】UIPopoverController的使用

    有些时候需要用到弹出窗口,这个时候UIPopoverController就有用武之地了,下面介绍一个使用UIPopoverController的示例,以供参考.实现效果如下: 为了实现这一效果并使用U ...

  7. iOS:iPad和iPhone开发的异同(UIPopoverController、UISplitViewController)

    iPad和iPhone开发的异同 1.iPhone和iPad: niPhone是手机,iPad.iPad Mini是平板电脑 iPhone和iPad开发的区别 屏幕的尺寸 \分辨率 UI元素的排布 \ ...

  8. 开源中国iOS客户端学习——(一)Prefix.pch文件

    2019独角兽企业重金招聘Python工程师标准>>> 当我们新建一个工程的时候,在Supporting FIles文件下会看到一个以  -Prefix.pch结尾文件的文件,pch ...

  9. 在iOS 8中使用UIAlertController

    本文转载至 http://www.cocoachina.com/ios/20141126/10320.html iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨 ...

最新文章

  1. python实现Shapiro-Wilk正态分布检验
  2. PHP 5.6.32 增加pdo_dblib.so拓展
  3. 原HP大中华区总裁孙振耀的退休感言
  4. Jquery练习题—实现分组添加功能
  5. php 生成等比例缩略图,PHP实现原比例生成缩略图的方法
  6. 课程管理系统c语言程序,课程信息管理系统C语言程序Word版
  7. python mysql编码_Python和MySql:Unicode和编码
  8. 零基础搭建双端影视盒子——二、搭建影视管理后台
  9. 专访Wunderlist主设计师Jan Martin:永远不要盲目跟风流行趋势
  10. hp笔记本如何看序列号
  11. 聊聊外贸企业自建网站注意事项
  12. 网络计算机没有权限,电脑网络连接出现“无Internet访问权限”怎么办?
  13. 一万块内工作站型计算机配置,1.5万元i7-7700K用于图形工作站高端电脑配置推荐...
  14. vs无法启动程序系统找不到指定文件
  15. 【今日】【20180511】物理学家——理查德·费曼 诞辰100周年
  16. SQL Server 数据库修复专家SQLRescue
  17. python实现 Python蟒蛇绘制(嵩天老师 )
  18. wannier插值能带拟合3
  19. 未知的类型名‘ulong_t’解决
  20. 企业微信公众号内容写什么好?微信公众号如何选题?

热门文章

  1. VTK:IO之ReadExodusData
  2. Qt Creator在3D编辑器中工作
  3. C++shell排序(附完整源码)
  4. 有序数组中查找数字的范围
  5. QT的QDtls类的使用
  6. windows C++ Opengl基础框架源码
  7. python打包脚本_py2exe打包python脚本
  8. java sortedset_Java类集-SortedSet接口 | 学步园
  9. mysql输入错误怎样更正_HotDB MySQL 篇| MySQL 源码系列的补充与更正
  10. 自定义Flume拦截器,并将收集的日志存储到Kafka中(案例)