Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从modal中选择数据后如何刷新UITableViewCell中的UITextField_Ios_Uitableview_Uitextfield_Modalviewcontroller - Fatal编程技术网

Ios 从modal中选择数据后如何刷新UITableViewCell中的UITextField

Ios 从modal中选择数据后如何刷新UITableViewCell中的UITextField,ios,uitableview,uitextfield,modalviewcontroller,Ios,Uitableview,Uitextfield,Modalviewcontroller,我有一个带有UITextFields的tableview来构建表单。然后,我在工具栏中有一个按钮,它启动一个模态视图控制器来选择一些数据,然后将这些数据传递回tableview。但是,所选的新数据不会使用textField.text=valueReturnedFromModal语法刷新到UITextField中。有什么我遗漏的吗 我看到数据是从模式中正确返回的,所以这不是问题所在。我只是在强制UITextField使用新数据刷新时遇到问题。我也尝试过在tableview上强制重新加载数据 因此,

我有一个带有UITextFields的tableview来构建表单。然后,我在工具栏中有一个按钮,它启动一个模态视图控制器来选择一些数据,然后将这些数据传递回tableview。但是,所选的新数据不会使用textField.text=valueReturnedFromModal语法刷新到UITextField中。有什么我遗漏的吗

我看到数据是从模式中正确返回的,所以这不是问题所在。我只是在强制UITextField使用新数据刷新时遇到问题。我也尝试过在tableview上强制重新加载数据

因此,从模态视图来看,下面是将数据传回的代码:

- (void)doneAccountSelection:(id)sender
{
    [delegate didSelectAccount:currentAccount];
    [self dismissModalViewControllerAnimated:YES];
}
下面是委托中的实际方法:

- (void)didSelectAccount:(SFAccount *)selectedAccount
{
    //Ensure a valid deal exists for the account to be attached to
    [self createDealObjectIfNeeded];

    //Set the deal account
    [self.deal setAccount:selectedAccount];

    //Refresh the text fields
    //Tag 3: Account Name field
    UITextField *acct_name = (UITextField *) [self.view viewWithTag:3];
    [acct_name setText:self.deal.account.field_acct_name_value];

    //Tag 4: Account City field
    UITextField *acct_city = (UITextField *) [self.view viewWithTag:4];
    [acct_city setText:self.deal.account.field_acct_city_value];

    //Save the context changes. A new deal gets created above if one does not exist.
    if ([self saveModel]) NSLog(@"Acct object created, attached to deal successfully!");

    [self.tableView reloadData];
}

在文本字段中获取值后使用此选项:

[self.tableView ReloadData];

您介意发布设置文本字段数据的代码和将数据传递回表视图的代码吗

答复:

看起来您正在正确设置数据,但是,您正在发送委托消息后解除模态视图控制器。在这种情况下,直到dismissModalViewControllerAnimated:结束后才创建表视图。这意味着文本字段在视图出现之前为空。我的建议是打电话

[self dismissModalViewControllerAnimated:YES];
作为didSelectAccount:delegate方法的第一行。这将关闭模式视图,然后继续将数据设置为有效的文本字段,因为已经调用了-viewwillbegine:/-viewdidebegine:。一切似乎都很好,只是订单可能会把你绊倒。虽然

-dismissModalViewControllerAnimated:

如果视图控制器没有模态视图(因为它是模态视图),则在委托方法中调用此方法似乎更合适,在委托方法中,您将最终根据新数据操作视图,等。

经过一些认真的调试后,发现
单元格中使用了
self.account
来设置
UITableViewCell
中的初始
UITextField
值。然后在模式选择完成后,我只更新交易对象的帐户引用,而不更新
self.account
对象


然后,我创建了一个名为
updateTextFieldsAfterModalFinished
的新方法,并将代码移动到那里,以更新
UITextField
s。然后从
didSelectAccount
调用此方法,该方法是模式视图的委托方法,将被取消。现在一切正常,模式选择完成后,
UITextFields
将得到更新。

如果我正确理解了您的答案,则textfield不会启动modalview,因此无法工作。模态视图将数据返回到tableviewcontroller中的委托方法,在该函数中,我需要更新文本字段中的文本。Brian,我尝试了您建议的方法。我移动了
[self dismissModalViewControllerAnimated:YES]
didSelectAccount:
method的开头,但是运气不好。您需要的方法是-createdealobjectifyneed。此设置是否为self的交易属性?如果没有,代码在哪里?
案例1:If(indexPath.row==0){cell.lblFieldName.text=@“Name”;If(account)cell.txtFieldValue.text=account.field\u acct\u Name\u value;cell.txtFieldValue.tag=3;}If(indexPath.row==1){cell.lblFieldName.text=@“City”;if(account)cell.txtFieldValue.text=account.field\u acct\u City\u value;cell.txtFieldValue.tag=4;}break;
以下是所需的
CreateDealObjectify:
的功能:
-(void)CreateDealObjectify{//如果不存在交易对象,则首先创建交易对象,如果(self.deal==nil){SFDeal*d=[NSEntityDescription insertNewObjectForEntityForName:@“SFDeal”inManagedObjectContext:moc];self.deal=d;//设置演示数据和删除标志以将新交易标识为“真实”数据[self.deal-setDemoDataFlag:[NSNumber numberwhithint:0]];[self.deal-setDeletedFlag:[NSNumber numberwhithint:0]];}
您指的是[self.view-view-withtag:number];什么时候文本字段不是UITableViewCell的一部分?