我有一个简单的应用程序,它是一个表格 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/