用 UIPopoverController 弹出 UITableView

来源:互联网 发布:路由器连的上但没网络 编辑:程序博客网 时间:2024/05/21 23:33

C代码  收藏代码
  1. //  
  2. //  LanguageListController.h  
  3. //  MyPresidents2  
  4. //  
  5. //  Created by Wunderman on 12-1-30.  
  6. //  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.  
  7. //  
  8.   
  9. #import <UIKit/UIKit.h>  
  10. #import "DetailViewController.h"  
  11.   
  12. @interface LanguageListController : UITableViewController {  
  13.     DetailViewController *detailViewController;  
  14.     NSArray *languageNames;  
  15.     NSArray *languageCodes;  
  16.       
  17. }  
  18.   
  19. @property(nonatomic, assign) DetailViewController *detailViewController;  
  20. @property(nonatomic, retain) NSArray *languageNames;  
  21. @property(nonatomic, retain) NSArray *languageCodes;  
  22.   
  23.   
  24.   
  25. @end  
 
C代码  收藏代码
  1. //  
  2. //  LanguageListController.m  
  3. //  MyPresidents2  
  4. //  
  5. //  Created by Wunderman on 12-1-30.  
  6. //  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.  
  7. //  
  8.   
  9. #import "LanguageListController.h"  
  10.   
  11. @implementation LanguageListController  
  12.   
  13. @synthesize detailViewController = _detailViewController;  
  14. @synthesize languageNames = _languageNames;  
  15. @synthesize languageCodes = _languageCodes;  
  16.   
  17. - (void)viewDidLoad {  
  18.     self.languageNames = [NSArray arrayWithObjects:
  19. @"Englist", @"French", @"German", @"Spanish", nil];  
  20.     self.languageCodes = [NSArray arrayWithObjects:
  21. @"en", @"fr", @"de", @"es", nil];  
  22.       
  23.     self.clearsSelectionOnViewWillAppear = NO;  
  24.     self.contentSizeForViewInPopover =
  25.  CGSizeMake(320.0, [self.languageCodes count] * 44.0);  
  26.       
  27. }  
  28.   
  29. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {  
  30.     return 1;  
  31. }  
  32.   
  33. - (NSInteger)tableView:(UITableView *)tableView
  34.  numberOfRowsInSection:(NSInteger)section {  
  35.     return [self.languageCodes count];  
  36. }  
  37.   
  38. - (UITableViewCell *)tableView:(UITableView *)tableView
  39. cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
  40.     static NSString *CellIdentifier = @"Cell";  
  41.       
  42.     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
  43. CellIdentifier];  
  44.     if (cell == nil) {  
  45.         cell = [[[UITableViewCell alloc] initWithStyle:
  46. UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];  
  47.     }  
  48.       
  49.     // Configure the cell...  
  50.     cell.textLabel.text = [self.languageNames objectAtIndex:[indexPath row]];  
  51.     return cell;  
  52. }  
  53.   
  54. - (void)tableView:(UITableView *)tableView
  55. didSelectRowAtIndexPath:(NSIndexPath *)indexPath {  
  56.     self.detailViewController.languageString =
  57. [self.languageCodes objectAtIndex: indexPath.row];  
  58.       
  59. }  
  60.   
  61.   
  62. - (void)viewDidUnload {  
  63.     self.detailViewController = nil;  
  64.     self.languageNames = nil;  
  65.     self.languageCodes = nil;  
  66. }  
  67.   
  68. - (void)dealloc {  
  69.     [self.detailViewController release];  
  70.     [self.languageNames release];  
  71.     [self.languageCodes release];  
  72.     [super dealloc];  
  73. }  
  74.   
  75. @end  

 

C代码  收藏代码
  1. - (IBAction)touchLanguageButton:(id)sender {  
  2.      
  3.     if (self.languagePopoverController.popoverVisible == NO) {  
  4.           
  5.         LanguageListController *languageListController =
  6.  [[LanguageListController alloc]   init];  
  7.         languageListController.detailViewController = self;  
  8.         UIPopoverController *poc = [[UIPopoverController alloc]  
  9.                                     initWithContentViewController:
  10.                                                languageListController];  
  11.         [poc presentPopoverFromBarButtonItem:self.languageButton   
  12.                     permittedArrowDirections:UIPopoverArrowDirectionAny   
  13.                                     animated:YES];  
  14.         self.languagePopoverController = poc;  
  15.         //[poc release]; 如果release ,点击四次后就抛错误。
  16.         //Current language:  auto; currently objective-c  
  17.         [languageListController release];  
  18.           
  19.     } else {  
  20.         [self.languagePopoverController dismissPopoverAnimated:YES];  
  21.     }  


原创粉丝点击