我有一个UITableViewCell,上面有一个UIStepper。当步骤值改变时,它会触发一个方法:
-(void) stepperDidStep: (UIStepper*) sender我需要从寄件人那里得到UITableViewCell。
直到iOS7,此代码才能正常工作:
-(void) stepperDidStep: (UIStepper*) sender
{
UITableViewCell *cell = (UITableViewCell*) sender.superview.superview;
//...
}现在,在iOS7+Autolayout中我得到了这样的信息:
UITableViewCell *cell = (UITableViewCell*) sender.superview; 细胞是UITableViewCellContentView
UITableViewCell *cell = (UITableViewCell*) sender.superview.superview;细胞是UITableViewCellScrollView (?)
问:在iOS7中,从步骤中获取细胞的最佳方法是什么?
谢谢
尼古拉
发布于 2013-10-02 15:09:16
为什么不直接将UIStepper的indexPath.Row设置为data-source方法cellForRowAtIndexPath中的indexPath.Row
然后在stepperDidStep:方法中,使用如下所示的cellForRowAtIndexPath:获取所需的单元格:
-(void) stepperDidStep: (UIStepper*) sender{
UITableViewCell *cell = (UITableViewCell*)[yourTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:sender.tag inSection:0];
}发布于 2013-10-02 15:07:23
尝尝这个。我没有测试它,但是我使用类似的代码来找到视图的视图控制器
- (UITableViewCell *)tableCellUnderView:(UIView *)view {
Class class = [UITableViewCell class];
// Traverse responder chain. Return first found UITableViewCell
UIResponder *responder = view;
while ((responder = [responder nextResponder]))
if ([responder isKindOfClass:class])
return (UITableViewCell *)responder;
return nil;
}发布于 2013-10-02 14:56:33
不要通过检查superview获取单元格。太不可靠了。这个单元格有一些隐藏的视图,使事情变得更加复杂。
相反,子类UIStepper并为其提供UITableViewCell的自定义属性(可能是弱引用),然后在设置UIStepper时将其设置为单元格,然后在调用stepperDidStep:方法时获取单元格。
类似于:
@interface CellStepper : UIStepper
@property (nonatomic, weak) UITableViewCell* cell;
@end。
-(void) stepperDidStep: (CellStepper*) sender
{
UITableViewCell *cell = sender.cell;
//...
}https://stackoverflow.com/questions/19134870
复制相似问题