以编程方式创建的文本字段不会保存文本

时间:2013-07-29 18:59:57

标签: ios objective-c uitextfield

状况:

我的两个文本字段正在我的.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);

我得到两个空值!

就像我对文本字段的更改完全没有被跟踪一样!

1 个答案:

答案 0 :(得分:0)

很可能根本没有对文本字段的更改进行跟踪!至少他们正在被跟踪,然后在你接触它们之前被释放。

每次都不要实例化新的UITextField对象。我建议你继承UITableViewCell来处理两个UITextField的所有权和绘图。为您的子类提供两个文本字段属性(@property (strong, nonatomic) UITextField *textField1/2),并确保在init中实例化它们或在setter中使用延迟实例化。

使用委托(textFieldDidEndEditing:协议中声明的UITextFieldDelegate方法)将UITextField中的数据传输到viewController。

那应该工作并跟踪对文本字段所做的更改。