`

用 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];
    }
}
 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics