ios - 使用 CoreData/NSFetchedResultsController 使用来自 PrepareForSegue 的字符串填充 UISearchBar

标签 ios core-data uitableview uisearchbar nsfetchedresultscontroller

我有一个简单的应用程序,它是一个表格 View (TV1),由用户点击导航栏中的加号按钮填充。用户将进入“添加条目”屏幕,其中点击“名称”文本字段将显示另一个 TableView (TV2),供用户添加现有条目、搜索现有条目或添加新条目。这非常有效,委托(delegate)确保我在新 TableView (TV2) 中选择的内容填充名称文本字段。

我想要实现的也是另一种方式;如果用户已经填充了名称文本字段并单击它来调出 TV2,我希望搜索栏已经填充了传递的字符串,同时确保搜索仍然有效。

例如,如果我有 John 的 nameTextField,当我单击 nameTextField 并进入 TV2 时,我希望 searchBar.text 说 John,而且现在搜索只显示 John 的条目名字,就像我开始输入约翰这个名字一样。

我正在使用核心数据和 NSFetchedResultsController。

在添加条目的 prepaeForSegue 中,我正在这样做:

if ([self.nameTextField.text length] > 0)
{
    [envylopeNameTextFieldTableViewController setSelectedName:self.nameTextField.text];
}

在TV2中,setSelectedName方法是:

- (void)setSelectedName:(NSString *)selectedName
{
    _selectedName = selectedName;
    self.nameAddSearchBar.text = selectedName; 
    [self searchBar:self.nameAddSearchBar textDidChange:selectedName];
}

最后一行是我的一个尝试,因为当我开始搜索时会调用该方法,所以我想我可以调用它。我在没有它的情况下尝试了它,并使用 self.nameAddSearchBar.text = self.selectedName 和 _selectedName ,什么也没有; searchBar 不会被填充。

通过断点,我可以看到 selectedName = John 和 _selectedName = John,但 self.nameAddSearchBar.text = nil。

我可以想象我还差一两行代码,但我只是不确定如何继续。

任何帮助都会非常好。

谢谢,

最佳答案

尝试移动

self.nameAddSearchBar.text = selectedName 

从 setter (-setSelectedName) 到 TV2 中的 viewDidLoad。这里的问题是您试图在加载之前分配 nameAddSearchBar ( View )。

由于搜索栏是“ View ”的一部分,因此在“viewDidLoad”之前它才可用。您可以使用正确的值设置 selectedName 属性,然后在加载 View (在 viewDidLoad 中)后使用该值更新 View (search bar.txt)。

关于ios - 使用 CoreData/NSFetchedResultsController 使用来自 PrepareForSegue 的字符串填充 UISearchBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22199755/

相关文章:

ios - IAP Auto Renewable Subscription 在到期日之前手动续订

iphone - 在 NSFetchedResultsController 的谓词中获取属性

iphone - 应用商店更新后的核心数据

ios - 跟踪与 iCloud 同步带来的变化

python - 高效刷新 TableView

ios - 从 UIViewController 将数据传递到 UIView 未按预期工作

ios - 关闭然后打开后如何在后台重新连接BLE设备?

iphone - 无法重新实现UIToolbar类的draw方法

ios - 单元格背景不透明

iphone - 访问 UITableView 的 "default"方法