starwar2012 于 2012.12.29 14:51 提问
- 在UITableView中添加数组首尾处的UIbutoton
-
问题:我要在
UITableView
中添加UIButton
,并且只加在第一个和最后一个数组上,不知道应该怎么实现?我知道可以用tableFooterView
添加按钮,但是不知道怎么样实现添加到指定数组位置中。请多多指教,谢谢我的代码:
- (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]; } //Adding a UIButton in last row NSInteger lastSectionIndex = [editTable numberOfSections] - 1; NSLog(@"lastSectionIndex:%d",lastSectionIndex); // Then grab the number of rows in the last section NSInteger lastRowIndex = [editTable numberOfRowsInSection:lastSectionIndex] - 1; NSLog(@"lastRowIndex:%d",lastRowIndex); // Now just construct the index path NSIndexPath *pathToLastRow = [NSIndexPath indexPathForRow:lastRowIndex inSection:lastSectionIndex]; NSLog(@"last index:%@",pathToLastRow); if (pathToLastRow.row == lastRowIndex) { NSLog(@"row enters"); checkButton1 = [UIButton buttonWithType:UIButtonTypeCustom]; [checkButton1 setFrame:CGRectMake(200, 0, 168, 168)]; [checkButton1 addTarget:self action:@selector(customActionPressed:) forControlEvents:UIControlEventTouchDown]; [checkButton1 setBackgroundImage:[[UIImage imageNamed:@"Up Arrow.jpg"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:0.0] forState:UIControlStateNormal]; editTable.tableFooterView = checkButton1; [cell addSubview:checkButton1]; }
现在我可以在tableview的每个单元里面接受到Button。
-
- lanhailvcao 2012.12.29 16:16
- 已采纳
先修改if条件句,
if ((lastSectionIndex == indexPath.section && lastRowIndex == indexPath.row ) || (indexPath.section == 0 && indexPath.row == 0 ))
{
然后就会这样:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
UIButton *checkButton1 = [UIButton buttonWithType:UIButtonTypeCustom];
checkButton1.tag = 100;//not recommended, I would suggest to use custom UITableViewCell class and add this button as subview inside its init method
[checkButton1 setFrame:CGRectMake(200, 0, 168, 168)];
[checkButton1 addTarget:self
action:@selector(customActionPressed:)
forControlEvents:UIControlEventTouchDown];
[checkButton1 setBackgroundImage:[[UIImage imageNamed:@"Up Arrow.jpg"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:0.0] forState:UIControlStateNormal];
[cell addSubview:checkButton1];
}
//Adding a UIButton in last row
NSInteger lastSectionIndex = [editTable numberOfSections] - 1;
NSLog(@"lastSectionIndex:%d",lastSectionIndex);
// Then grab the number of rows in the last section
NSInteger lastRowIndex = [editTable numberOfRowsInSection:lastSectionIndex] - 1;
NSLog(@"lastRowIndex:%d",lastRowIndex);
// Now just construct the index path
NSIndexPath *pathToLastRow = [NSIndexPath indexPathForRow:lastRowIndex inSection:lastSectionIndex];
NSLog(@"last index:%@",pathToLastRow);
UIButton *checkButton1 = (UIButton *)[cell viewWithTag:100];//not recommended, I would suggest to use custom UITableViewCell class and add this button as subview inside its init method
if ((lastSectionIndex == indexPath.section && lastRowIndex == indexPath.row ) || (indexPath.section == 0 && indexPath.row == 0 ))
{
checkButton1.hidden = NO;
} else {
checkButton1.hidden = YES;
}
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!