Dichiarazione del metodo NSSlider richiesto (SliderDidMove) non trovata sulla documentazione degli sviluppatori di Apple

StackOverflow https://stackoverflow.com/questions/9350319

  •  27-10-2019
  •  | 
  •  

Domanda

Lavorando su un tutorial con un nsslider.

Quello che voglio: spostare il cursore mostrerà il valore del cursore in nstextfield.

Il tutorial spiega che il seguente metodo mostrerà il valore del cursore nel campo di testo:

- (IBAction)sliderDidMove:(id)sender {
    NSSlider *slider = sender;
    double value = [slider doubleValue];
    [sliderValueLabel setDoubleValue:value];    
}

Il metodo non funziona, quindi ho provato a trovare la dichiarazione del metodo sul sito Web di sviluppatori di Apple ma non sono riuscito a trovarlo. Dalla mia comprensione è il metodo: SliderDidMove un metodo di classe della classe nsslider, quindi perché non riesco a trovare alcuna documentazione?

È stato utile?

Soluzione

Quando il valore del dispositivo di scorrimento cambia, invia -[NSControl action] al suo -[NSControl target]. Quindi in Interface Builder è necessario eliminare ctrl dal cursore all'oggetto che ha sliderDidMove: (Questo sarà probabilmente il delegato di app o il proprietario del file). Il nome è scelto dall'autore del tutorial, può essere qualsiasi altra cosa.

In alternativa, puoi impostarlo a livello di programmazione:

[slider setTarget:self]; // assume the handler is [self sliderDidMove:]
[slider setAction:@selector(sliderDidMove:)];

Si noti inoltre che questo particolare compito è meglio risolto con le associazioni: legare il valore del cursore e dell'etichetta a a double Proprietà di un oggetto e il cacao li manterrà sincronizzati.

Altri suggerimenti

In Swift ...

 // Somewhere maybe in viewDidLoad ...
        slider.target = self
        slider.action = #selector(sliderDidMove)



// Later on..

func sliderDidMove(){
    print("The slider moved!")
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top