UIPopoverController的使用
有些时候需要用到弹出窗口,这个时候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的使用相关推荐
- UIPopoverController在ARC环境下用法注意
在ARC环境下如果便用以下代码: [cpp] view plaincopyprint? UIViewController *viewTwo; viewTwo = [[ViewTwo alloc] in ...
- iOS:弹出窗控制器:UIPopoverController
弹出窗控制器:UIPopoverController 截图: 实质:就是将内容控制器包装成popoverController的形式,然后在模态出来,必须给定指向目标(target.frame). ...
- UIPopoverController简介
1, performSegueWithIdentifier:sender:跳转或弹出控制器 Identifier为popoverSegue时候,Sender仅限于UIBarbuttonItem与Vie ...
- iPad开发 - UIPopoverController控制器
iPad简介 什么是iPad 一款苹果公司于2010年发布的平板电脑 定位介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 iPad的市场情况 截止至20 ...
- UIPopoverController的使用,看着很牛逼的样子
先看看这个图 要做的样子就是点击下面这个按钮,弹出上面这个带箭头的弹出框 下面来看看怎么搞 #import <UIKit/UIKit.h>@interface UIActionSheetD ...
- 【转】UIPopoverController的使用
有些时候需要用到弹出窗口,这个时候UIPopoverController就有用武之地了,下面介绍一个使用UIPopoverController的示例,以供参考.实现效果如下: 为了实现这一效果并使用U ...
- iOS:iPad和iPhone开发的异同(UIPopoverController、UISplitViewController)
iPad和iPhone开发的异同 1.iPhone和iPad: niPhone是手机,iPad.iPad Mini是平板电脑 iPhone和iPad开发的区别 屏幕的尺寸 \分辨率 UI元素的排布 \ ...
- 开源中国iOS客户端学习——(一)Prefix.pch文件
2019独角兽企业重金招聘Python工程师标准>>> 当我们新建一个工程的时候,在Supporting FIles文件下会看到一个以 -Prefix.pch结尾文件的文件,pch ...
- 在iOS 8中使用UIAlertController
本文转载至 http://www.cocoachina.com/ios/20141126/10320.html iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨 ...
最新文章
- python实现Shapiro-Wilk正态分布检验
- PHP 5.6.32 增加pdo_dblib.so拓展
- 原HP大中华区总裁孙振耀的退休感言
- Jquery练习题—实现分组添加功能
- php 生成等比例缩略图,PHP实现原比例生成缩略图的方法
- 课程管理系统c语言程序,课程信息管理系统C语言程序Word版
- python mysql编码_Python和MySql:Unicode和编码
- 零基础搭建双端影视盒子——二、搭建影视管理后台
- 专访Wunderlist主设计师Jan Martin:永远不要盲目跟风流行趋势
- hp笔记本如何看序列号
- 聊聊外贸企业自建网站注意事项
- 网络计算机没有权限,电脑网络连接出现“无Internet访问权限”怎么办?
- 一万块内工作站型计算机配置,1.5万元i7-7700K用于图形工作站高端电脑配置推荐...
- vs无法启动程序系统找不到指定文件
- 【今日】【20180511】物理学家——理查德·费曼 诞辰100周年
- SQL Server 数据库修复专家SQLRescue
- python实现 Python蟒蛇绘制(嵩天老师 )
- wannier插值能带拟合3
- 未知的类型名‘ulong_t’解决
- 企业微信公众号内容写什么好?微信公众号如何选题?
热门文章
- VTK:IO之ReadExodusData
- Qt Creator在3D编辑器中工作
- C++shell排序(附完整源码)
- 有序数组中查找数字的范围
- QT的QDtls类的使用
- windows C++ Opengl基础框架源码
- python打包脚本_py2exe打包python脚本
- java sortedset_Java类集-SortedSet接口 | 学步园
- mysql输入错误怎样更正_HotDB MySQL 篇| MySQL 源码系列的补充与更正
- 自定义Flume拦截器,并将收集的日志存储到Kafka中(案例)