• UIPopoverController的使用


    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

  • 相关阅读:
    Android使用Fragment来实现TabHost的功能
    selendroid之toast处理
    selendroid之inspector
    杂技
    自动化测试框架
    保险数据分析
    订单分析指标
    CRM原型
    monkey 参数
    monkey基础操作
  • 原文地址:https://www.cnblogs.com/moonvan/p/2248162.html
Copyright © 2020-2023  润新知