我在故事板中为文本字段制作了一个插座。文本字段位于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.
}
}];
}
}
答案 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];
}