Mar*_*oni 5 indexing uitableview segue
我的UItableViewCell附件按钮有问题.我的配件按钮与另一个UIViewController的segue"连接".当我点击一个附件按钮时,我从模型中获取对象,并将此对象"传递"到segue destinationViewController.这是我对segue方法的准备:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"IdentityCard"])
{
NSLog(@"%i" ,self.tableView.indexPathForSelectedRow.row);
[segue.destinationViewController showIdentityCardForTeacher:[self.teachers getTeacherInPosition:self.tableView.indexPathForSelectedRow.row]];
}
}
Run Code Online (Sandbox Code Playgroud)
问题是方法开头的NSLog(在"if"之后)始终显示数字0!我试着实现这个方法:
-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)
但是在这个方法之前执行了segue方法的准备,所以我不能设置任何@property来"保存"indexPath.我怎么解决这个问题?
小智 20
在:
- (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender
...你有'sender'参数,可以让你知道已被Tapped的附件的Cell,所以:
index = [self.tableView indexPathForCell:sender] .row;
您可以获取它的索引以便使用它.
然后您不需要使用tableView的accessoryButtonTappedForRowWithIndexPath方法.
我用这种方式解决了这个问题:我将 UIViewController 连接到destinationViewController(不是从附件按钮,而是从 UIViewController)。
我在第一个视图控制器中创建了一个@property:
@property (nonatomic) NSInteger indexPathRow;
Run Code Online (Sandbox Code Playgroud)
然后我将代码修改如下:
-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"Disclosure Tapped----> %i" ,indexPath.row);
self.indexPathRow = indexPath.row;
[self performSegueWithIdentifier:@"IdentityCard" sender:self];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"IdentityCard"])
{
NSLog(@"%i" ,self.tableView.indexPathForSelectedRow.row);
[segue.destinationViewController showIdentityCardForTeacher:[self.teachers getTeacherInPosition:self.indexPathRow]];
}
}
Run Code Online (Sandbox Code Playgroud)
现在可以了!
| 归档时间: |
|
| 查看次数: |
2892 次 |
| 最近记录: |