我有一个自定义的UITableViewCell:
@interface EditingTableViewCell : UITableViewCell <UITextFieldDelegate> {
UITextField *editableText;
UILabel *textLabel;
}
我确实从UITextField editingDidEnd
收到了editableText
条消息。现在我如何将它的消息传递给创建这个单元格的UITableViewController?
在单元格中创建像id delegate;
这样的ivar并将其设置为tableViewController实例吗?
答案 0 :(得分:0)
我想我找到了一个做好工作的方法......
@protocol
// EditingCellDelegate.h
@protocol EditingCellDelegate
@optional
- (void)textLabelEditDidEnd:(UITextField *)textField;
@end
EditingTableViewCell
类
// EditingTableViewCell.h
...
@property (nonatomic, assign) id <EditingCellDelegate> delegate;
所以这样我可以将消息传递给符合该单元协议的UITableViewController。当然,您必须检查该课程conformsToProtocol
和respondsToSelector
。现在我可以打电话给它。像这样:
//EditingTableViewCell.m
- (IBAction)editDone:(id)sender {
if([[self delegate] respondsToSelector:@selector(textLabelEditDidEnd:)]) {
[[self delegate] textLabelEditDidEnd:(UITextField *)sender];
}
}