RowControlsController.m
上传用户:jjjjag8
上传日期:2017-04-17
资源大小:1443k
文件大小:4k
源码类别:

iPhone

开发平台:

MultiPlatform

  1. //
  2. //  RowControlsController.m
  3. //  Nav
  4. //
  5. //  Created by Jeff LaMarche on 7/22/08.
  6. //  Copyright 2008 __MyCompanyName__. All rights reserved.
  7. //
  8. #import "RowControlsController.h"
  9. @implementation RowControlsController
  10. @synthesize list;
  11. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
  12. if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
  13. // Initialization code
  14. }
  15. return self;
  16. }
  17. - (void)viewDidLoad {
  18. NSArray *array = [[NSArray alloc] initWithObjects:@"R2-D2", @"C3PO", @"Tik-Tok", @"Robby", @"Rosie", @"Uniblab", @"Bender", @"Marvin", @"Lt. Commander Data", @"Evil Brother Lore", @"Optimus Prime", @"Tobor", @"HAL", @"Orgasmatron", nil];
  19. self.list = array;
  20. [array release];
  21. [super viewDidLoad];
  22. }
  23. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
  24. // Return YES for supported orientations
  25. return (interfaceOrientation == UIInterfaceOrientationPortrait);
  26. }
  27. - (void)didReceiveMemoryWarning {
  28. [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
  29. // Release anything that's not essential, such as cached data
  30. }
  31. - (void)dealloc {
  32. [list release];
  33. [super dealloc];
  34. }
  35. #pragma mark -
  36. #pragma mark Table Data Source Methods
  37. - (NSInteger)tableView:(UITableView *)tableView 
  38.  numberOfRowsInSection:(NSInteger)section {
  39. return [list count];
  40. }
  41. - (UITableViewCell *)tableView:(UITableView *)tableView 
  42.  cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  43. static NSString *ControlRowIdentifier = @"ControlRowIdentifier";
  44. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ControlRowIdentifier];
  45. if (cell == nil) {
  46. cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero 
  47.    reuseIdentifier:ControlRowIdentifier] autorelease];
  48. UISwitch *switchView = [[UISwitch alloc] init];
  49. switchView.tag = kSwitchTag;
  50. cell.accessoryView = switchView;
  51. [switchView release];
  52. }
  53. //////////////////////////////////////////////////////////////////
  54. // NOTE: In this example, we are not keeping track of the state
  55. //  of the switch. As a result, if our list were longer, we
  56. //       would lose because the table view would dequeue the cell
  57. //  with the switch in it. This is okay when you know your
  58. //  table view's list will be small, but generally, you'll
  59. //  want to keep track of any state in your application's
  60. //  data model and shouldn't rely on table view cells to
  61. //  hold onto values for you. For simplicity's sake, this
  62. //  example doesn't have a data model, but in the last 
  63. //  subcontroller, you'll see how to store the data rather
  64. //  than relying on the table view cell, which could get
  65. //  dequeued.
  66. //////////////////////////////////////////////////////////////////
  67. NSUInteger row = [indexPath row];
  68. NSString *rowTitle = [list objectAtIndex:row];
  69. cell.text = rowTitle;
  70. [rowTitle release];
  71. return cell;
  72. #pragma mark -
  73. #pragma mark Table Delegate Methods
  74. - (void)tableView:(UITableView *)tableView 
  75. didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  76. {
  77. NSUInteger row = [indexPath row];
  78. UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
  79. UISwitch *switchView = (UISwitch *)[cell viewWithTag:kSwitchTag];
  80. NSString *baseString = @"%@ %@.";
  81. NSString *onString = (switchView.on) ? @"IS on" : @"IS NOT on";
  82. NSString *robot = [list objectAtIndex:row];
  83. NSString *messageString = [[NSString alloc] initWithFormat:baseString, robot, onString];
  84. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Row Selected." 
  85. message:messageString 
  86.    delegate:nil 
  87.   cancelButtonTitle:@"Thanks!" 
  88.   otherButtonTitles:nil];
  89. [alert show];
  90. [alert release];
  91. [messageString release];
  92. [tableView deselectRowAtIndexPath:indexPath animated:YES];
  93. @end