我有一个简单的应用程序,它是一个表视图(TV1),由用户点击导航栏中的加号按钮填充。用户进入“添加条目”屏幕,其中点击“名称”文本字段会显示另一个表视图(TV2),供用户添加现有条目,搜索现有条目或添加新条目。这非常有效,并且委托确保我在新的表视图(TV2)中选择的内容填充名称文本字段。
我想要实现的是另一种方式;如果用户已经填充了名称文本字段并单击它以显示TV2,我希望搜索栏已经填充了通过的字符串,同时确保搜索仍然有效。
例如,如果我有John的nameTextField,当我点击nameTextField并被带到TV2时,我希望searchBar.text说出John,但是现在搜索只显示带有John的条目这个名字,就像我开始输入名字John一样。
我正在使用Core Data和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。
我可以想象我只有一两行代码,但我不确定如何继续。
任何帮助都会非常棒。
谢谢,
答案 0 :(得分:1)
尝试移动
self.nameAddSearchBar.text = selectedName
从setter(-setSelectedName)到TV2中的viewDidLoad。这里的问题是你在加载之前尝试分配nameAddSearchBar(一个视图)。
由于搜索栏是“视图”的一部分,因此在“viewDidLoad”之前它不可用。您可以使用正确的值设置selectedName属性,然后在加载视图后使用该值更新视图(搜索bar.txt)(在viewDidLoad中)。