你如何在故事板中的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。