【发布时间】:2020-11-12 07:47:25
【问题描述】:
我为 UITableViewCell 创建了一个自定义类。 UITableViewCell 是故事板中的一个动态原型单元。我试图从我的主视图控制器中的 textfield.text 引用字符串。我在主视图控制器中的代码为 textfield.text 字符串返回 nil。我知道对单元格的引用是正确的,因为它会自动填充 textfield.text,但仍然返回 nil。请帮忙。
class AddMyLayerTitleCell: UITableViewCell, UITextFieldDelegate {
@IBOutlet weak var addMyLayerTitleTF: UITextField!
override func awakeFromNib() {
super.awakeFromNib()
self.addMyLayerTitleTF.becomeFirstResponder()
self.addMyLayerTitleTF.delegate = self
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool { //delegate method
textField.resignFirstResponder()
// This works
print("text field text = \(addMyLayerTitleTF.text!)")
return true
}
}
MainViewController.m - (objective-c)
- (IBAction)addMyLayerSaveButton:(id)sender {
AddMyLayerTitleCell *cell = [self.gisTableView dequeueReusableCellWithIdentifier:@"AddTitleCell"];
NSString *myLayerString = cell.addMyLayerTitleTF.text;
// Returns nil
NSLog(@"myLayerString = %@", myLayerString);
NSLog(@"myLayerString = %@", cell.addMyLayerTitleTF.text);
}
【问题讨论】:
-
嘿,您的“AddMyLayerTitleCell”在 Swift 中,您正在尝试将它们用于 Objective-C 类。
-
是的,没错。我认为它应该仍然有效,但可能是错误的。你认为这是问题所在吗?
-
当然,使用单一语言。
-
我删除了我的答案,因为原因是别的。该代码无法工作,因为
dequeueReusableCellWithIdentifier只能在cellForRowAtIndexPath中使用。 -
好的,瓦迪安。我会尽量使用单一语言,Ashutosh。
标签: ios objective-c swift uitextfield