Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

Ge förändrande funktioner till en knapp i Cocoa?

Tråden skapades och har fått 3 svar. Det senaste inlägget skrevs .
1

Är helt ny i Objective-C, och försöker mig på lite enkel programmering i Cocoa.
Har två frågor:

1)
Hur kan man få en knapp att utföra olika actions varje gång man klickar på den?
Så att första gången utför den en sak, andra gången en annan, tredje gången en tredje osv.

2)
Hur kan man göra en if funktion med strings som conditions..?
Jag försökte skriva nåt i stil med:

Citat:

NSString *enstring = [xField stringValue];

NSString *yesstring = [NSString stringWithFormat:@Ett meddelande];
NSString *nostring = [NSString stringWithFormat:@Ett annat meddelande];

if (enstring == @yes)
{
[yField setStringValue:yesstring];
}
if (enstring == @no)
{
[yField setStringValue:nostring];
}

Men det fungerar inte. Vad gör jag för fel?

O

2. När du jämför sådär så kollar du bara om det är samma objekt, inte om de har samma textinnehåll. Använd NSStrings isEqualToString så kommer det att fungera.

1. Du skriver en actionmetod som vanligt och upprätthåller helt enkelt nåt sorts state. Här är ett exempel på en action jag skrivit som togglar repeat mode för en mediaspelare mellan tre olika state och byter bild på knappen beroende på vilket läge som är aktivt:

- (IBAction)repeat:(id)sender {
    SPPlaylistRepeatMode    repeatMode;

    repeatMode = [self repeatMode];
    
    if(repeatMode == SPPlaylistRepeatOne)
        repeatMode = SPPlaylistRepeatOff;
    else
        repeatMode++;
    
    [self setRepeatMode:repeatMode];
}

- (void)setRepeatMode:(SPPlaylistRepeatMode)repeatMode {
    NSString        *image;

    _repeatMode = repeatMode;

    switch(_repeatMode) {
        case SPPlaylistRepeatOff:   image = @RepeatOff;   break;
        case SPPlaylistRepeatAll:   image = @RepeatAll;   break;
        case SPPlaylistRepeatOne:   image = @RepeatOne;   break;
    }

    [_repeatButton setImage:[NSImage imageNamed:image]];
}

- (SPPlaylistRepeatMode)repeatMode {
    return _repeatMode;
}

Tackar Marcus! Det fungerar perfekt!
Vad gäller loopen morris, så är det nog lite över mitt huvud än så länge. Men tack för hjälpen, jag sparar ner sidan så jag kan kolla på det senare.

O

1
Bevaka tråden