2012-10-06 42 views
0

在我的項目中,我有一個搜索欄。在xcode中使用靜態變量

如果在搜索欄中的文本改變了,我需要知道

所以我聲明瞭兩個靜態的NSMutableString比較如下

static NSMutableString *latestKeyWord; 
static NSMutableString *secondaryKeyWord; 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [testViewController setSecondaryKeyWord:SBar.text]; 
    [testViewController setLatestKeyWord:SBar.text]; 
    [testViewController changeKeyWord]; 
} 
    +(void)setSecondaryKeyWord:(NSMutableString*) text 
{ 
    if (!secondaryKeyWord) { 
     secondaryKeyWord = [NSMutableString stringWithCapacity:200]; 
    } 
    [secondaryKeyWord setString:text]; 
} 

+(void)setLatestKeyWord:(NSMutableString*)text 
{ 
    if (!latestKeyWord) { 
     latestKeyWord = [NSMutableString stringWithCapacity:200]; 
    } 
    [latestKeyWord setString:secondaryKeyWord]; 
} 

-(BOOL)changeKeyWord 
{ 
    if (! [latestKeyWord isEqualToString:secondaryKeyWord]) { 
     NSLog(@"changed"); 
     return TRUE; 
    }else { 
     NSLog(@"not change"); 
     return FALSE; 
    } 
} 

它只是放養,我不知道爲什麼。

+0

你到底想幹什麼?你爲什麼使用靜態變量而不是實例變量?爲什麼'NSMutableString'而不是一個簡單的'NSString'? – DrummerB

+0

我正在解析一個網站。 我有另一個名爲pageNumber的靜態NSInteger和另一個名爲startParsing的函數。 當我第一次打電話給starParsing的時候,它會解析第1頁, 第二次解析頁面2等。 所以pageNumber是記住我需要下一個哪個頁面進行解析。 如果SearchBar中的文本改變了pageNumber需要重置('pageNum = 0') 我聲明瞭兩個'NSMutableString'來比較。 我使用'NSMutableString'是因爲靜態變量只使用前綴'+'的方法,而我沒有找到該方法可以在NSString中用capasity初始化。 感謝您的回覆! –

+0

因此,當文本字段中的文本發生更改時,您希望收到通知? – DrummerB

回答

0

如果您想在一個文本字段改變你添加一個目標/行動的文本字段通知:

@interface ViewController : UIViewController 
@property (nonatomic) UITextField *field; 
@property (nonatomic) NSString *searchText; 
@end 


@implementation ViewController 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    CGRect frame = CGRectMake(50, 50, 200, 25); 
    self.field = [[UITextField alloc] initWithFrame:frame]; 
    [self.field addTarget:self action:@selector(textChanged:) 
     forControlEvents:UIControlEventEditingChanged]; 
    [self.view addSubview:self.field]; 
} 

- (void)textChanged:(id)sender { 
    self.searchText = self.field.text; 
    NSLog(@"Text changed to: %@", self.searchText); 
    // restart searching here. 
} 
@end 
+0

它的工作原理!謝謝!但我有點困惑與'[self.field addTarget:自我行動:@選擇器(textChanged :) forControlEvents:UIControlEventEditingChanged] ;'..在我看來,它將永遠是'自我' –