状况:
我的两个文本字段正在我的.h文件中声明:
@interface DetailViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, UIAlertViewDelegate, UITextFieldDelegate> {
UITextField *countTotalFieldUniversal;
UITextField *flavorNameUniversal;
}
在我的.m文件中实例化:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
// Label default cell
static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(cell==nil){
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
}
//Text fields used for editing
countTotalFieldUniversal = [[UITextField alloc] initWithFrame:CGRectMake(200, 10, 85, 30)];
countTotalFieldUniversal. delegate = self;
flavorNameUniversal = [[UITextField alloc] initWithFrame:CGRectMake(10, 8, 280, 30)];
flavorNameUniversal.delegate = self;
flavorNameUniversal.text = @"Flavor";
countTotalFieldUniversal.text = @"Count";
尝试调查:
当我尝试使用以下代码打印setEditing中的当前文本字段值时:
NSString *flavorText = ((UITextField*)[self.view viewWithTag:1]).text;
NSString *countText = ((UITextField*)[self.view viewWithTag:2]).text;
NSLog(@"newFlavorName: %@", flavorText);
NSLog(@"newCountTotal: %@", countText);
我只获得未经编辑的原始标签:“Flavor”和“Count”。
当我尝试使用以下代码打印setEditing中的当前文本字段值时:
NSString * newFlavorName = flavorNameUniversal.text;
NSString * newCountTotal = countTotalFieldUniversal.text;
NSLog(@"newFlavorName: %@", newFlavorName);
NSLog(@"newCountTotal: %@", newCountTotal);
我得到两个空值!
就像我对文本字段的更改完全没有被跟踪一样!
答案 0 :(得分:0)
很可能根本没有对文本字段的更改进行跟踪!至少他们正在被跟踪,然后在你接触它们之前被释放。
每次都不要实例化新的UITextField
对象。我建议你继承UITableViewCell来处理两个UITextField
的所有权和绘图。为您的子类提供两个文本字段属性(@property (strong, nonatomic) UITextField *textField1/2
),并确保在init
中实例化它们或在setter中使用延迟实例化。
使用委托(textFieldDidEndEditing:
协议中声明的UITextFieldDelegate
方法)将UITextField
中的数据传输到viewController。
那应该工作并跟踪对文本字段所做的更改。