首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在UISearchBar中保存选定的范围按钮?

如何在UISearchBar中保存选定的范围按钮?
EN

Stack Overflow用户
提问于 2018-08-07 01:53:52
回答 1查看 129关注 0票数 -2

我有一个带有4个示波器按钮的UISearchBar。我需要存储按下的范围按钮在下一次当用户选择另一个时,在目标C中,有什么想法吗?

解决方案:这是给其他人的解决方案

代码语言:javascript
复制
static NSString *yourKey = @"savedScopeSelection";

viewDidLoad

代码语言:javascript
复制
- (void)viewDidLoad
{

NSInteger newIndex = [[NSUserDefaults standardUserDefaults] integerForKey:yourKey];
[self.searchDisplayController.searchBar setSelectedScopeButtonIndex:newIndex];

}

UISearchBar作用域

代码语言:javascript
复制
    - (void)searchForText:(NSString *)searchText scope:(UYLWorldFactsSearchScope)scopeOption
{

    if (self.managedObjectContext)
    {

        NSString *predicateFormat = @"%K contains[cd] %@";
        NSString *searchAttribute = @"option0";
         [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:yourKey];
        if (scopeOption == searchScopeOption1)

        {
            searchAttribute = @"option1";
             [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:yourKey];
        }

        if (scopeOption == searchScopeOption2)
        {
            searchAttribute = @"option2";
             [[NSUserDefaults standardUserDefaults] setInteger:2 forKey:yourKey];
        }

        if (scopeOption == searchScopeOption3)
        {
            searchAttribute = @"option3";
             [[NSUserDefaults standardUserDefaults] setInteger:3 forKey:yourKey];
        }

        if (scopeOption == searchScopeOption4)
        {
            searchAttribute = @"option4";
             [[NSUserDefaults standardUserDefaults] setInteger:4 forKey:yourKey];

        }

        NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateFormat, searchAttribute, searchText];
        [self.searchFetchRequest setPredicate:predicate];

        NSError *error = nil;
        self.filteredList = [self.managedObjectContext executeFetchRequest:self.searchFetchRequest error:&error];
        if (error)
        {
            NSLog(@"searchFetchRequest failed: %@",[error localizedDescription]);
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-07 07:16:46

现在似乎是使用NSUserDefaults的好时机。

在某处设置静态密钥

代码语言:javascript
复制
static NSString *yourKey = @"savedScopeSelection";

进行选择时,存储所选索引的值:

代码语言:javascript
复制
 [[NSUserDefaults standardUserDefaults] setInteger:newIndexValue forKey:yourKey];

初始化搜索栏时,查看默认值以获取存储的索引:

代码语言:javascript
复制
  NSInteger *newIndex = [[NSUserDefaults standardUserDefaults] integerForKey:yourKey];

我建议你用一个整数来表示每个范围按钮。您可以使用如下的枚举:

代码语言:javascript
复制
enum ScopeButtonIndex: Int {
    case thisScope = 1
    case thatScope = 2
    case otherScope = 3
    case fourthScope = 4
}

我特别喜欢给它一个索引,因为我将它存储在userDefaults中,并且我不想在将来的某个版本中通过添加另一个值而意外地更改索引值

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51713157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档