【发布时间】:2020-01-25 16:44:39
【问题描述】:
我有一个 UITableViewController 和一个实现 UITableView 的类。
@interface CreateEditViewController : UITableViewController<UITextFieldDelegate>
@end
我还有一个实现 UITableViewCell 的类,每个 Cell 都包含一个文本字段。
@interface CreateEditCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UITextField *celltextfield;
@end
在我的 TableView 控制器类中,我实现了三个方法 cellForRowAtIndexPath、numberOfRowsInSection 和 textFieldShouldReturn
在我的cellForRowAtIndexPath 中,我将每个单元格的文本字段委托分配给 self,并在 switch case 中给每个单元格一个标签。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
CreateEditCell* cell = nil;
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.celltextfield.delegate = self;
cell.celltextfield.returnKeyType = UIReturnKeyNext;
switch (indexPath.row) {
case 0:
cell.celltextfield.tag = 0;
break;
case 1:
cell.celltextfield.tag = 1;
break;
case 2:
cell.celltextfield.tag = 2;
break;
case 3:
cell.celltextfield.tag = 3;
break;
}
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 4;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
NSInteger nexttag = textField.tag+1;
UIResponder* nextresponder = [textField.superview viewWithTag:nexttag];
if(nextresponder){
[nextresponder becomeFirstResponder];
}else{
[textField resignFirstResponder];
NSLog(@"Nothing to return to");
}
return NO;
}
因此,返回下一个文本字段在我之前的设计中有效,我没有由单元格动态生成文本字段。相反,我在故事板上有单独的文本字段,并在 viewdidload 中分配了它们的标签。但是现在使用当前的设计,当我点击返回按钮而不是转到下一个单元格时,它只会打印“Nothing to return”,这没有意义,因为我有四个单元格(四个文本字段),每个单元格都有自己的独特的标签。所以我的问题是,如何使用我拥有的当前设计返回下一个文本字段。
【问题讨论】:
标签: ios objective-c uitableview