我有一个带有Custom Cell和Section Header的TableView。标题显示国家和自定义细胞向我显示城市。
看起来像这样:
USA
纽约
洛杉矶
德国
柏林
Frakfurt
每个Cell都有一个Button。按下后,它将导航并将城市名称推送到详细视图。
问题是,我按下按钮后不知道如何确定城市名称。
我有一个解决方案,但它不再起作用了:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
StandortCell *cell = (StandortCell *)[tableView dequeueReusableCellWithIdentifier:@"ortCell"];
[cell.detailButton setTag:indexPath.row];
cell.ortLabel.text = [managedObject valueForKey:@"stadtname"];
}
- (IBAction)detailButton:(id)sender {
UIView *contentView = [sender superview];
UITableViewCell *cell = (UITableViewCell *)[contentView superview];
NSIndexPath *cellIndexPath = [self.tableView indexPathForCell:cell];
NSInteger section = cellIndexPath.section;
UIButton * myButton = sender;
int row=myButton.tag;
NSIndexPath * indexPath = [NSIndexPath indexPathForRow:row inSection:section];
StrasseViewController *detail = [self.storyboard instantiateViewControllerWithIdentifier:@"strasse"];
self.selectedStandort = [self.fetchedResultsController objectAtIndexPath:indexPath];
detail.currentStandort = self.selectedStandort;
[self.navigationController pushViewController:detail animated:YES];
}
当我使用旧代码时,它将在第一部分显示正确的街道行。它没有检测到其他部分(国家);
当我选择第三部分中的第一个城市时。它将显示我在第一部分的第一个城市。
我希望你能帮助我。
答案 0 :(得分:1)
使用它我希望它能解决你的目的。
在视图控制器中创建按钮按下方法
(IBAction)detailButton:(UIButton *)sender {
CustomUITableViewCellName * cell =(CustomUITableViewCellName *)[[sender superview] superview]; NSIndexPath * cellIndexPath = [YOUR_TABLE_NAME indexPathForCell:cell];
}
对于ios 7,添加另一个超级视图。
现在通过这种方式,您将获得IndexPath并通过使用获取当前行 indexPath.row或indexPath.section。
您可以使用sender.title属性获取标题。
您可以在数组中使用此indexPath来获取所需的详细信息。
答案 1 :(得分:0)
您需要单独发送行和部分信息,以便将标记设为
标签=行* 1000 +部分。
现在使用row = tag / 1000从标记获取部分和行值 section = tag%1000
使用此值来制作正确的索引路径或找到一些更好的2分钟解决方案来获得它。
请注意,正确的解决方法是
@interface CustomButton :UIButton
@property (nonatomic,assign)NSIndexPath *path;
@end
CustomButton.m中的
@implementation CustomButton
@synthesize path;
@end
在表格视图单元格上使用此自定义按钮,而不是标记集路径属性