[英]Use of undeclared identifier on a method
所以我有一個UISwitch
:
UISwitch* statusBarSwitch = [[UISwitch alloc]initWithFrame:CGRectMake(254, 65, 0, 0)];
[statusBarSwitch addTarget:self action:@selector(statusBarSwitchChanged) forControlEvents:UIControlEventValueChanged];
[[self view]addSubview:statusBarSwitch];
[statusBarSwitch setOn:YES animated:NO];
這是UISwitch的方法:
-(void)statusBarSwitchChanged {
if (statusBarSwitch.on) {
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}else{
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
}
}
現在,當我運行它時,在statusBarSwitchChanged
上收到錯誤“使用未聲明的標識符”。
有人請幫助我,我不知道我做錯了什么。
您嘗試編譯時發生錯誤,而不是嘗試運行。
您為什么期望代碼按原樣工作? statusBarSwitchChanged
方法中沒有諸如statusBarSwitch
類的變量。
在您發布的代碼的第一位中有一個這樣的局部變量,但是在聲明該變量的花括號之外看不到該變量。
您有兩個選擇可以解決此問題。
首先是更改選擇器和方法,如下所示:
UISwitch* statusBarSwitch = [[UISwitch alloc]initWithFrame:CGRectMake(254, 65, 0, 0)];
// Note the added colon to the selector name
[statusBarSwitch addTarget:self action:@selector(statusBarSwitchChanged:) forControlEvents:UIControlEventValueChanged];
[[self view]addSubview:statusBarSwitch];
[statusBarSwitch setOn:YES animated:NO];
- (void)statusBarSwitchChanged:(UISwitch *)sender {
if (sender.on) {
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
} else {
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
}
}
上述更改可確保將使用的開關傳遞給您設置的操作方法。
第二個選項是創建一個實例變量以保留對UISwitch
。 然后,您可以從類中的任何實例方法訪問該開關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.