你如何在故事板中的UISearchbar的结果,并在另一个angular度使用这些结果?
好的,这是一个非常简单的问题,但是这让我感到很沮丧。
我在Storyboard中创build一个观点,并在顶部放置一个search栏和search显示控制器。 如何将search栏的结果存储到对象中,并将该对象传递给另一个视图? 我试着为UIViewController创build另一个类,并且用“prepareforsegue”方法搞乱了,但是导致了黑屏。
我有点像这样的search栏: http : //www.appcoda.com/how-to-add-search-bar-uitableview/
但是,我不想通过表视图进行search,而是使用用户键入的search结果,并将其用于另一个对象(从互联网获取结果)后将其传递到另一个视图。
任何人都可以帮助我,并给我一些关于这个问题的指导? 非常感谢你。
您可以使用NSUserDefaults来存储数据并在另一个视图中使用它,理想的方法是在一个单独的类中创build它,以便您可以重用它,例如:创build一个名为Reusables的类,
在Reusables.h中
#import <Foundation/Foundation.h> @interface Reusables : NSObject +(void)storeDataToDefaults :(NSString *)keyName objectToAdd:(id)data; +(NSString *)getDefaultValue:(NSString *)key; +(void)removeDataFromDefaultsWithKey:(NSString *)keyName; @end
在Reusables.m中
#import "Reusables.h" @implementation Reusables +(void)storeDataToDefaults :(NSString *)keyName objectToAdd:(id)data { if (![data isKindOfClass:[NSNull class]]) { NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults]; [defaults setValue:data forKey:keyName]; [defaults synchronize]; } } +(NSObject *)getDefaultValue:(NSString *)key { NSObject *value=[[NSUserDefaults standardUserDefaults] valueForKey:key]; return value; } +(void)removeDataFromDefaultsWithKey:(NSString *)keyName { NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults]; if ([defaults valueForKey:keyName]) [defaults removeObjectForKey:keyName]; [defaults synchronize]; }
现在在你想要存储结果的视图控制器里inputReusables.h,并且只是这样做来存储search结果的值
[Reusables storeDataToDefaults:@"SearchResults" objectToAdd:yourSearchResults];
请注意,yourSearchResults是包含您的search结果的数据,它可以是单个值或数组
现在在你想要使用数据导入Reusables.h的视图控制器只是做到这一点
someVariableToStoreData=[Reusables getDefaultValue:@"SearchResults"];
你可以使用[Reusables removeDataFromDefaultsWithKey:@"SearchResults"];
如果需要清除价值。
您需要将您的ViewController设置为searchBar的委托,然后实施委托方法实际进行search/向前传递信息。 看看这里的苹果文档。
你想要实现的方法是:
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar; // return NO to not become first responder - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar; // called when text starts editing - (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar; // return NO to not resign first responder - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar; // called when text ends editing - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText; // called when text changes (including clear) - (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text NS_AVAILABLE_IOS(3_0); // called before text changes - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar; // called when keyboard search button pressed - (void)searchBarBookmarkButtonClicked:(UISearchBar *)searchBar; // called when bookmark button pressed - (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar; // called when cancel button pressed - (void)searchBarResultsListButtonClicked:(UISearchBar *)searchBar NS_AVAILABLE_IOS(3_2); // called when search results button pressed
通过使用searchBar.text你可以得到当前的用户input。
- instantiateInitialViewController和instantiateViewControllerWithIdentifier之间有什么区别?
- 如何加载所有视图控制器故事板,但跳过自然序列,并直接到一个特定的视图?
- 独立StoryBoards的iPhone 5和iPhone 4S
- 停止游戏的应用程序,如果主页button点击iOS
- 如何设置故事板的代表
- uitabbarcontroller storyboard:连接已经连接到另一个uitabbarctrl的viewcontroller
- 我可以将故事板从一个项目复制到另一个项目吗?
- 想要创build一个很酷的静态UI,但是:“静态表视图只是有效的…”
- 禁用Xcode Storyboard中的约束