加载 UItableView 以响应 uitextfield

Posted

技术标签:

【中文标题】加载 UItableView 以响应 uitextfield【英文标题】:loading UItableView in response with uitextfield 【发布时间】:2013-12-05 09:25:56 【问题描述】:

我正在开发一个从 mysql 数据库加载数据的应用程序。我有 3 个视图控制器,第一个带有文本字段以获取输入,第二个是主表视图,然后是 detailView 控制器。

当用户在文本字段中输入数据时,它会在 MySql 数据库中搜索并将其填充到 tableview 中。例如,当用户搜索食谱名称比萨时,在 UITexField 中,tableview 必须仅填充比萨食谱。 我在 tableview 中列出了所有的食谱。我不知道如何让 tableview 响应 UITextfield 输入。

注意:我使用 JSON 序列化来快速加载并在 detailView 中对图像进行跟踪。

【问题讨论】:

tableView 现在有什么了。 您必须通过一些努力才能找到它。到目前为止你有什么尝试解决这个问题。?有很多类似的问题,这是很好的答案。 【参考方案1】:

你可以使用名为的 UITextField 的委托方法

-(BOOL)textFieldShouldReturn:(UITextField *)textField

    [textField resignFirstResponder];
    return  YES;

当您在此方法中将文本放入 UITextField 后按回车键时会调用此方法,您可以调用一个方法,例如 -(void)fetchDataFromMysql

调用此方法后,您的代码将如下所示

-(BOOL)textFieldShouldReturn:(UITextField *)textField
    
        [self fetchDataFromMysql];
        [textField resignFirstResponder];
        return  YES;
    

在 fetchDataFromMysql 方法中,从 Mysql 存储中检索食谱的名称,该存储检索您用来在 tableView 中绘制食谱名称的数组中的食谱名称,例如“recipeNameAry”。

因此,当用户输入例如比萨饼的搜索键时,您将从 Mysql 获取比萨饼的食谱,我们将该食谱存储在“recipeNameAry”中,现在是时候更新您的表视图的食谱名称了,在此之后调用名为“reloadData”的方法来更新 tableView ,调用此方法后您的代码将如下所示

-(BOOL)textFieldShouldReturn:(UITextField *)textField
    
        [self fetchDataFromMysql];
        [recipeNameTableView reloadData]; 
      //here recipeNameTableView is the name of your tableView.
        [textField resignFirstResponder];
        return  YES;
    

它将使用属于比萨饼或其他什么的食谱更新您的 tableView。

注意 :- 首先将 UITextFieldDelegate 添加到您的 .h 文件中,例如

#import <UIKit/UIKit.h>

@interface contact : UIViewController <UITableViewDataSource,UITableViewDelegate,UITextFieldDelegate>


@end

并在您的 XIB 中使用您的 FileOwner 将委托添加到您的 UITextField

【讨论】:

很抱歉,我没有正确理解您想说的话? HI shwar,我试过你提到的方法。谢谢你。但是 uitextfield 输入“pizza”在 VC1 中,并且仅在 VC2 中的 tableView 中填充“pizza”。我无法将 uitextfield 输入传递给 vc2。当我尝试从 VC1 传递 VC2 时,我存储为字符串,它返回 null .. 示例 shawar,www.example.com/123.php?valuereceipe=%@@,textinputstringhereinVC2fromVC1);你能帮我吗?请交友【参考方案2】:

要填充表格,您必须使用一个数组,其数据取决于通过第一个 VC 的文本字段进行的选择。因此,首先根据 textfield 中的文本在数组中获取适当的数据,然后使用该数组填充表格。要随时更新表,您可以使用

[tblname reloadData];

【讨论】:

它起作用了,这是我的错,我创建了一个 segue 并将 texdtfield 文本分配给 nsstring 并将其作为 nsstring 传输到第二个视图控制器。它运行良好。 +1 让我知道,因为有些时候人们在这里提出问题甚至不提供反馈,你一直在等待知道它是否有效。 @user1118198

以上是关于加载 UItableView 以响应 uitextfield的主要内容,如果未能解决你的问题,请参考以下文章

如何在 NSDictionary 中访问本地 JSON 文件响应以在 UITableView 中显示?

禁用 UILabel、UIText 等的自动调整字体。在 iOS/Swift 中?

显示 JSON 数据的 UITableView 中的响应滞后

无法更改 UIText 视图的字体(使用 Web 服务时)

UITableView横向无响应区域

如何初始加载 UITableView 然后观察 Firebase 节点以更改在 Swift 中刷新 tableview?