我有一个带有复选标记公开按钮的项目表,我想根据哪些项目进行检查来创建第二个表格。我知道我应该使用方法 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];
}
最终,我希望它像这张图片中的内容,右侧检查的项目显示为左侧的新表格:
答案 0 :(得分:0)
我没有尝试过,但这样可以帮助您解决问题:
selectedRowsArray
tableview:didSelectRowAtIndexPath:
委托方法:UITableViewCell *cell = [self.tableview cellForRowAtIndexPath:indexPath]
获取对所选单元格的引用。例如:
if (cell.accessoryType != UITableViewCellAccessoryCheckmark)
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
[selectedRowsArray addObject:THE_OBJECT];
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
[selectedRowsArray removeObject:THE_OBJECT];
}
现在您可以使用可变数组用数据填充其他tableview。每次在数组中添加或删除对象时,请记得在tableview上调用reloadData
。