2011-12-31 53 views
0

我有一個帶有複選標記公開按鈕的項目表,並且我想基於哪個檢查項目創建第二個表格。我知道我應該使用方法tableView:accessoryButtonTappedForRowWithIndexPath,但我不知道如何實現它。從現有表格中檢查的行中創建一個新表格

所以我們假設這是我的代碼,我在哪裏輸入ButtonTapped方法,它是如何實現的?

@implementation RootViewController 

@synthesize detailViewController; 


#pragma mark - 
#pragma mark View lifecycle 

- (void)viewDidLoad { 
    [self createFlowerData]; 
    [super viewDidLoad]; 
} 

/* 
- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
} 
*/ 
/* 
- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
} 
*/ 
/* 
- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 
} 
*/ 
/* 
- (void)viewDidDisappear:(BOOL)animated { 
    [super viewDidDisappear:animated]; 
} 
*/ 

// Ensure that the view controller supports rotation and that the split view can therefore show in both portrait and landscape. 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return YES; 
} 


#pragma mark - 
#pragma mark Size for popover 
// The size the view should be when presented in a popover. 
- (CGSize)contentSizeForViewInPopoverView { 
    return CGSizeMake(320.0, 600.0); 
} 


#pragma mark - 
#pragma mark Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)aTableView { 
    // Return the number of sections. 
    return [flowerSections count]; 
} 


- (NSInteger)tableView:(UITableView *)aTableView numberOfRowsInSection:(NSInteger)section { 
    // Return the number of rows in the section. 
    return [[flowerData objectAtIndex:section] count]; 
} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"CellIdentifier"; 

    // Dequeue or create a cell of the appropriate type. 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
    } 

    // Configure the cell. 
    [[cell textLabel] setText:[[[flowerData objectAtIndex:indexPath.section] objectAtIndex: indexPath.row] objectForKey:@"name"]]; 
    [[cell imageView] setImage:[UIImage imageNamed:[[[flowerData objectAtIndex:indexPath.section] objectAtIndex: indexPath.row] objectForKey:@"picture"]]]; 
    cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator; 
    return cell; 
} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    return [flowerSections objectAtIndex:section]; 
} 


- (void)createFlowerData { 

    NSMutableArray *redFlowers; 
    NSMutableArray *blueFlowers; 

    flowerSections=[[NSMutableArray alloc] initWithObjects: 
        @"Red Flowers",@"Blue Flowers",nil]; 

    redFlowers=[[NSMutableArray alloc] init]; 
    blueFlowers=[[NSMutableArray alloc] init]; 

    [redFlowers addObject:[[NSMutableDictionary alloc] 
          initWithObjectsAndKeys:@"Poppy",@"name", 
          @"poppy.png",@"picture", 
          @"http://en.wikipedia.org/wiki/Poppy",@"url",nil]]; 
    [redFlowers addObject:[[NSMutableDictionary alloc] 
          initWithObjectsAndKeys:@"Tulip",@"name", 
          @"tulip.png",@"picture", 
          @"http://en.wikipedia.org/wiki/Tulip",@"url",nil]]; 
    [redFlowers addObject:[[NSMutableDictionary alloc] 
          initWithObjectsAndKeys:@"Gerbera",@"name", 
          @"gerbera.png",@"picture", 
          @"http://en.wikipedia.org/wiki/Gerbera",@"url",nil]]; 
    [redFlowers addObject:[[NSMutableDictionary alloc] 
          initWithObjectsAndKeys:@"Peony",@"name", 
          @"peony.png",@"picture", 
          @"http://en.wikipedia.org/wiki/Peony",@"url",nil]]; 
    [redFlowers addObject:[[NSMutableDictionary alloc] 
          initWithObjectsAndKeys:@"Rose",@"name", 
          @"rose.png",@"picture", 
          @"http://en.wikipedia.org/wiki/Rose",@"url",nil]]; 
    [redFlowers addObject:[[NSMutableDictionary alloc] 
          initWithObjectsAndKeys:@"Hollyhock",@"name", 
          @"hollyhock.png",@"picture", 
          @"http://en.wikipedia.org/wiki/Hollyhock", 
          @"url",nil]]; 
    [redFlowers addObject:[[NSMutableDictionary alloc] 
          initWithObjectsAndKeys:@"Straw Flower",@"name", 
          @"strawflower.png",@"picture", 
          @"http://en.wikipedia.org/wiki/Strawflower", 
          @"url",nil]]; 

    [blueFlowers addObject:[[NSMutableDictionary alloc] 
          initWithObjectsAndKeys:@"Hyacinth",@"name", 
          @"hyacinth.png",@"picture", 
          @"http://en.wikipedia.org/wiki/Hyacinth_(flower)", 
          @"url",nil]]; 
    [blueFlowers addObject:[[NSMutableDictionary alloc] 
          initWithObjectsAndKeys:@"Hydrangea",@"name", 
          @"hydrangea.png",@"picture", 
          @"http://en.wikipedia.org/wiki/Hydrangea", 
          @"url",nil]]; 
    [blueFlowers addObject:[[NSMutableDictionary alloc] 
          initWithObjectsAndKeys:@"Sea Holly",@"name", 
          @"seaholly.png",@"picture", 
          @"http://en.wikipedia.org/wiki/Sea_holly", 
          @"url",nil]]; 
    [blueFlowers addObject:[[NSMutableDictionary alloc] 
          initWithObjectsAndKeys:@"Grape Hyacinth",@"name", 
          @"grapehyacinth.png",@"picture", 
          @"http://en.wikipedia.org/wiki/Grape_hyacinth", 
          @"url",nil]]; 
    [blueFlowers addObject:[[NSMutableDictionary alloc] 
          initWithObjectsAndKeys:@"Phlox",@"name", 
          @"phlox.png",@"picture", 
          @"http://en.wikipedia.org/wiki/Phlox",@"url",nil]]; 
    [blueFlowers addObject:[[NSMutableDictionary alloc] 
          initWithObjectsAndKeys:@"Pin Cushion Flower",@"name", 
          @"pincushionflower.png",@"picture", 
          @"http://en.wikipedia.org/wiki/Scabious", 
          @"url",nil]]; 
    [blueFlowers addObject:[[NSMutableDictionary alloc] 
          initWithObjectsAndKeys:@"Iris",@"name", 
          @"iris.png",@"picture", 
          @"http://en.wikipedia.org/wiki/Iris_(plant)", 
          @"url",nil]]; 

    flowerData=[[NSMutableArray alloc] initWithObjects: 
       redFlowers,blueFlowers,nil]; 

    [redFlowers release]; 
    [blueFlowers release]; 
} 


/* 
// Override to support conditional editing of the table view. 
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Return NO if you do not want the specified item to be editable. 
    return YES; 
} 
*/ 


/* 
// Override to support editing the table view. 
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 

    if (editingStyle == UITableViewCellEditingStyleDelete) { 
     // Delete the row from the data source 
     [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; 
    } 
    else if (editingStyle == UITableViewCellEditingStyleInsert) { 
     // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 
    } 
} 
*/ 


/* 
// Override to support rearranging the table view. 
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { 
} 
*/ 


/* 
// Override to support conditional rearranging of the table view. 
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Return NO if you do not want the item to be re-orderable. 
    return YES; 
} 
*/ 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return 75.0; 
} 


#pragma mark - 
#pragma mark Table view delegate 

- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    /* 
    When a row is selected, set the detail view controller's detail item to the item associated with the selected row. 
    */ 
    detailViewController.detailItem = 
     [[flowerData objectAtIndex:indexPath.section] 
      objectAtIndex: indexPath.row]; 

} 


#pragma mark - 
#pragma mark Memory management 

- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Relinquish ownership any cached data, images, etc. that aren't in use. 
} 

- (void)viewDidUnload { 
    // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand. 
    // For example: self.myOutlet = nil; 
} 


- (void)dealloc { 
    [flowerData release]; 
    [flowerSections release]; 
    [detailViewController release]; 
    [super dealloc]; 
} 

最後,我希望它是這樣的圖像,在項目右側覈對中出現在左邊一個新表:

enter image description here

回答

0

我還沒有試過,但這個應該讓你用自己的方式來解決問題:

  1. 創建一個NSMutableArray的牽你的選擇的行:selectedRowsArray
  2. 實施tableview:didSelectRowAtIndexPath:委託方法:
  3. 在此方法中,獲取對UITableViewCell *cell = [self.tableview cellForRowAtIndexPath:indexPath]所選單元格的引用。
  4. 檢查小區中已經有一個勾號,如果沒有,添加複選標記,並添加你感興趣的可變數組對象...

例:

if (cell.accessoryType != UITableViewCellAccessoryCheckmark) 
{ 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
    [selectedRowsArray addObject:THE_OBJECT]; 
} else { 
    cell.accessoryType = UITableViewCellAccessoryNone; 
    [selectedRowsArray removeObject:THE_OBJECT]; 
} 

現在您可以使用可變數組來用數據填充另一個tableview。請記住,每次向陣列中添加或刪除對象時,都要在tableview上調用reloadData

+0

哦,你可能需要將你的單元格選擇樣式設置爲none或者一旦點擊它就以編程方式取消選擇該單元格。 – Rog 2011-12-31 03:54:29

相關問題