簡體   English   中英

在方法上使用未聲明的標識符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM