UITextField.Text从其他视图返回null

时间:2014-07-16 21:02:11

标签: ios objective-c uitableview uitextfield

我在故事板中为文本字段制作了一个插座。文本字段位于TableViewCell中,因此我在UsernameTableViewCell中设置了它:

@property (strong, nonatomic) IBOutlet UITextField *username;

然后,在SignUpTableViewController中,我设置我试图检索用户在这里输入的TextField的值:

UsernameTableViewCell *usernameObject = [[UsernameTableViewCell alloc]init];

现在,当我尝试获取文本字段的值时,我得到(null):

NSLog(@"%@", usernameObject.username.text);

如何修复此问题,以便usernameObject.username.text显示用户输入的值?

更新

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == 2) {
        UsernameTableViewCell *usernameObject = [[UsernameTableViewCell alloc]init];
        PasswordTableViewCell *passwordObject = [[PasswordTableViewCell alloc]init];
        NSLog(@"%@", usernameObject.username.text);
        PFUser *user = [PFUser user];
        user.username = usernameObject.username.text;
        user.password = passwordObject.password.text;
        user.email = @"email@example.com";

        [user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
            if (!error) {
                // Hooray! Let them use the app now.
            } else {
                NSString *errorString = [error userInfo][@"error"];
                // Show the errorString somewhere and let the user try again.
            }
        }];
    }
}

2 个答案:

答案 0 :(得分:1)

首先,你应该将你的细胞出列。

在故事板中为您的UITableViewCell标记重用标识符。然后在tableviewdatadelegate中,您应该使用以下代码来创建单元格。

    UsernameTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"usernameCell" forIndexPath:indexPath];

UsernameTableViewCell应该引用您作为IBOutlet创建的UITextField。

现在,当用户点击一个单元格时,我假设您让用户继续输入?

如果您正在使用其他点击来检测用户是否已完成输入,那么您必须编写自己的函数以首先获取该索引处的单元格,然后在该单元格中查找UITextField然后访问该文本在那里面。

如果您提供更多有关细胞的代码和详细信息,那么它将更容易提供帮助

答案 1 :(得分:0)

//步骤1:使muteable数组最后一笔交易

        @implementation settingViewController{
         int flag;
        NSMutableArray *lastDeal;

        }

//第2步:在视图中初始化lastdeal并加载

    - (void)viewDidLoad {
     lastDeal=[[NSMutableArray alloc]init];
    }

//步骤3:使用您的类创建单元格并为单元格指定标记并分配代理

   -(UITableViewCell *)tableView:(UITableView *)tableView  cellForRowAtIndexPath:(NSIndexPath *)indexPath{

        simpleCellIdentifier=@"settingTableItem";
            UsernameTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

        if (cell == nil)
        {
            cell = [[UsernameTableViewCell alloc]      initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
        }
        [cell.textField setTag:indexPath.row];
           [cell.itemField setDelegate:self];
          }

//第4步:只需复制下面的代码,它会将你的用户名放在lastDeal的0索引处,在1索引处就会输入你的密码。

现在您可以在任何地方使用数组信息。

      -(void)textFieldDidEndEditing:(UITextField *)textField{
        [self.lastDeal removeObjectAtIndex:textField.tag];
          [self.lastDeal insertObject:textField.text atIndex:textField.tag];
       }