`

用 UIPopoverController 弹出 UITableView

    博客分类:
  • IOS
 
阅读更多

 

//
//  LanguageListController.h
//  MyPresidents2
//
//  Created by Wunderman on 12-1-30.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "DetailViewController.h"

@interface LanguageListController : UITableViewController {
    DetailViewController *detailViewController;
    NSArray *languageNames;
    NSArray *languageCodes;
    
}

@property(nonatomic, assign) DetailViewController *detailViewController;
@property(nonatomic, retain) NSArray *languageNames;
@property(nonatomic, retain) NSArray *languageCodes;



@end
 
//
//  LanguageListController.m
//  MyPresidents2
//
//  Created by Wunderman on 12-1-30.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import "LanguageListController.h"

@implementation LanguageListController

@synthesize detailViewController = _detailViewController;
@synthesize languageNames = _languageNames;
@synthesize languageCodes = _languageCodes;

- (void)viewDidLoad {
    self.languageNames = [NSArray arrayWithObjects:@"Englist", @"French", @"German", @"Spanish", nil];
    self.languageCodes = [NSArray arrayWithObjects:@"en", @"fr", @"de", @"es", nil];
    
    self.clearsSelectionOnViewWillAppear = NO;
    self.contentSizeForViewInPopover = CGSizeMake(320.0, [self.languageCodes count] * 44.0);
    
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [self.languageCodes count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    
    // Configure the cell...
    cell.textLabel.text = [self.languageNames objectAtIndex:[indexPath row]];
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    self.detailViewController.languageString = [self.languageCodes objectAtIndex: indexPath.row];
    
}


- (void)viewDidUnload {
    self.detailViewController = nil;
    self.languageNames = nil;
    self.languageCodes = nil;
}

- (void)dealloc {
    [self.detailViewController release];
    [self.languageNames release];
    [self.languageCodes release];
    [super dealloc];
}

@end

 

- (IBAction)touchLanguageButton:(id)sender {
   
    if (self.languagePopoverController.popoverVisible == NO) {
        
        LanguageListController *languageListController = [[LanguageListController alloc]
                                                          init];
        languageListController.detailViewController = self;
        UIPopoverController *poc = [[UIPopoverController alloc]
                                    initWithContentViewController:languageListController];
        [poc presentPopoverFromBarButtonItem:self.languageButton 
                    permittedArrowDirections:UIPopoverArrowDirectionAny 
                                    animated:YES];
        self.languagePopoverController = poc;
        //[poc release]; 如果release ,点击四次后就抛错误。Current language:  auto; currently objective-c
        [languageListController release];
        
    } else {
        [self.languagePopoverController dismissPopoverAnimated:YES];
    }
}
 

 

 

 

分享到:
评论

相关推荐

    UIPopoverController简单使用

    这个组件的设计理念是模仿iPad系统自带的一些弹出视图,比如邮件应用中选择收件人的界面。在本篇文章中,我们将深入探讨如何简单地使用UIPopoverController。 首先,我们需要了解UIPopoverController的基本概念。它...

    UIPopoverController用法

    在iOS开发中,UIPopoverController是一个非常重要的组件,主要用于iPad应用,它可以在屏幕上显示一个大型的弹出视图,通常用于展示更多的信息或者提供多个操作选项。这个组件的设计风格与iPad的大屏幕体验相吻合,...

    iOS开发中UIPopoverController的使用详解

    UIPopoverController是一个类,用于在iPad应用中展示内容,它会以一个弹出窗口的形式出现,只占据屏幕的一部分空间,并且始终位于其他界面元素之上。尽管在iPhone上官方不推荐使用,但在某些特定场景下,开发者也...

    ios-弹出多选框,自定义.zip

    首先,我们需要理解iOS中的弹出视图(Popup View)通常有几种形式:UIAlertController、UIPopoverController(iPad专用)、UIActionSheet(已废弃,但仍然可以使用)以及自定义视图。在这个场景中,由于我们想要...

    IOS弹出菜单源码

    在iOS开发中,弹出菜单(Popover)是一种常见的交互元素,它可以在用户触击某控件后以一种优雅的方式展示更多的选项。这个“IOS弹出菜单源码”项目旨在提供一个自定义的、功能丰富的弹出菜单解决方案。下面将详细...

    iOS 7 模糊视图 左侧弹出菜单

    在iOS 7中,左侧弹出菜单通常被用作导航的一种方式,它允许用户从屏幕边缘滑动以展示一个包含多个选项的菜单。这种设计模式在很多应用中都很常见,比如Facebook和Twitter。实现这样的功能,开发者可以使用自定义容器...

    (0047)-iOS/iPhone/iPAD/iPod源代码-列表(Table)-PopoverTableViewCell

    5. **布局与动画**:为了提高用户体验,弹出视图的出现和消失通常会伴随动画效果。你可以使用`UIView`的动画API来控制这些效果。 6. **关闭机制**:确保有一个明确的关闭机制,比如点击背景或设置一个关闭按钮,让...

    IOS应用源码——超炫的弹出框选择列表效果.zip

    在iOS应用开发中,创建一个超炫的弹出框选择列表效果可以极大地提升用户体验,吸引用户的注意力,并且使交互过程更加生动有趣。这份名为"IOS应用源码——超炫的弹出框选择列表效果.zip"的压缩包提供了一个实现此类...

    swift-点击出现的下拉菜单简单设置数据源就可以实现效果

    首先,我们要了解Swift中的下拉菜单其实是一种自定义视图,通常基于UIView或者UIPopoverController的变体。在这里,我们提及的是FXDropDownMenu,它是一个开源的Swift库,可以帮助开发者快速构建下拉菜单功能。...

    ios-cell点击下拉.zip

    3. **使用UIPopoverController或UIActionSheet**:如果下拉内容较多,可以使用弹出视图来展示。但这两种控件在iPad上更常见,iPhone上通常不推荐使用。 4. **使用UICollectionView或UIStackView**:在cell内部嵌入...

    iPhone开发中类似其他语言的combox控件

    4. UIPopoverController(仅限iPad): 这是一种在大屏设备上提供下拉效果的方式,它会在指定位置弹出一个包含内容的气泡窗口。通常,这个窗口内部会包含一个`UITableView`或`UIPickerView`,让用户选择后关闭。 在...

    ios导航栏 下拉列表

    标题“ios导航栏 下拉列表”指的是在iOS应用的导航栏右侧的barbuttonitem上实现点击后弹出下拉列表的功能。这个功能通常通过自定义视图或者第三方库来实现。 描述中提到的“ios在导航栏的barbuttonitem 点击 出现...

    UIControlTest.7z

    4. **UIPopoverPresentationController**(iOS)/`NSPopover`(macOS):这两种控件提供了弹出窗口的功能,可以用来展示更复杂的视图,如一个包含多个选项的表格视图。它们可以模拟Windows中下拉框的效果,但需要...

    Emailable Cell

    2. **自定义弹出视图(UIPopoverController 或 Action Sheet)**:当长按手势被识别后,会显示一个类似苹果的Annotation的弹出视图,它可以是UIPopoverController(iPad)或者UIAlertController(iPhone)的Action ...

    iOS开发总结

    关于UI方面,还有一些高级功能,如使用CALayer和CGLayer实现高清显示,通过UIPopoverController来展示弹出式窗口,使用block来实现简单的动画效果,以及如何隐藏app图标上的发光效果。此外,还可以通过编写手势识别...

    ios-阿里巴巴订货.zip

    2. **弹出视图**:标签提到的“弹出视图”可能指的是UIPopoverController(iPad)或UIAlertController(iPhone/iPad通用)。在购物车功能中,弹出视图可能用于展示商品详情、编辑购物车内容或确认订单。实现时需要...

    ios-自定义聊天界面(无三方库).zip

    项目描述提到长按聊天信息可以弹出复制和删除选项,这涉及到`UILongPressGestureRecognizer`的使用。当用户长按时,手势识别器会触发相应事件,然后通过代理方法或闭包来处理操作。 6. **自定义弹出菜单**: 要...

    swift-类似京东淘宝排序筛选

    4. `UIPopoverController` 或 `UIPresentationController`:在iPad应用中,可能会使用弹出式视图来展示更复杂的筛选菜单。 5. 自定义控件:如压缩包中的`XMDropDownChooseView`,可能是一个自定义的下拉选择视图,...

    ios-信息录入界面.zip

    常见的方法是使用`UIPopoverController`(iPad上)或`UIAlertController`(iPhone和iPad上的弹出视图)配合`UITableView`。另外,还可以用`UIPresentationController`自定义呈现方式,或者使用第三方库如`...

    UICatalog苹果控件源码大全

    5. **UIPopoverController**:在iPad应用中,Popover控制器常用于创建弹出式视图,通常与UIBarButton或其它UI控件关联。源码中可能包含如何创建和管理Popover的示例。 6. **Swift或Objective-C语言**:UICatalog...

Global site tag (gtag.js) - Google Analytics