App maken: ook jij kunt het leren!

 

de iOS Academie Forums

Forums - App-ontwikkeling - Xcode: Achtergrond veranderen tussen twee ViewControllers

Max Kievits  Op de eerste vier stappen van zijn/haar studiekaart scoort Max 70%. Klokje28 jul 2015, 16:38
Avatar
Avatar
Berichten:26
Fans:3


Hallo allemaal,

Ik zit met een klein probleempje. In mijn app heb ik de mogelijkheid om verschillende thema's te kiezen. Dit is aan te passen in mijn 'InstellingenController'. Maar dit effect moet optreden in mijn 'MenuViewController'. Dat is het menu van mijn Slide-Menu. (Zie screenshots hieronder). Mijn probleem is dus dat ik niet weet hoe ik de MenuViewController's achtergrond kan laten updaten op het moment dat je een nieuw thema selecteerd. Ik heb eindeloos op internet lopen zoeken naar hoe ik dat goed kan oplossen, en wat ik het meest tegenkwam is het data uitwisselen tussen ViewControllers die in een NavigationController samenzitten. In mijn geval is dat niet zo. En een NSTimer, met een delay van 0.075, aan te zetten die om het interval gaat kijken of de achtergrond is veranderd neer te zetten, is ook niet echt een goede oplossing. Hebben jullie misschien ideeën? Alvast bedankt!

 

Groetjes,

 

Max

(Hieronder de screenshots)

InstellingenControllerMenuController

Reageer


Admin Roelf  Klokje29 jul 2015, 22:33
Avatar


Max, kun je geen InstellingenMenuDelegate-protocol maken en je MenuViewController dan de delegate maken van je InstellingenController? Dan roep je, in de InstellingenController, een kleurIsGewijzigd()-methode aan die door de delegate (de MenuViewController) wordt afgehandeld en klaar ben je!

Reageer


Max Kievits  Op de eerste vier stappen van zijn/haar studiekaart scoort Max 70%. Klokje30 jul 2015, 10:37
Avatar
Avatar
Berichten:26
Fans:3


Hallo Roelf,

Bedankt voor je reactie. Ik heb eens gezocht naar een goede uitleg over Delegate protocols, en ik heb het exact overgenomen. Maar als ik NSLog ga gebruiken in de method waar de gegevens vanuit de delegate komen, dan wordt de NSLog niet uitgevoerd. De hele method wordt niet uitgevoerd. Enig idee? Code:

 

InstellingenController.h

#import <UIKit/UIKit.h>

@protocol UpdateBackground <NSObject>

- (void)UpdateBackgroundWithColor:(NSString *)color;

@end

@interface InstellingenController : UITableViewController {

}
@property (nonatomic, assign) id <UpdateBackground> delegate; 

@end

InstellingenController.m

- (IBAction)green:(id)sender {

    [self.delegate UpdateBackgroundWithColor:@"green"];
}

- (IBAction)blue:(id)sender {

    [self.delegate UpdateBackgroundWithColor:@"blue"];
}

- (IBAction)purple:(id)sender {

    [self.delegate UpdateBackgroundWithColor:@"purple"];
}

 

MenuViewController.h

#import <UIKit/UIKit.h>
#import "InstellingenController.h"

@interface MenuViewController : UITableViewController <UpdateBackground>{

}

MenuViewController.m

- (void)viewDidLoad

{

    [super viewDidLoad];

    

    InstellingenController *_instellingenController = [[InstellingenController alloc ]init];

    

    _instellingenController.delegate = self;

}

-(void)UpdateBackgroundWithColor:(NSString *)color {

    NSLog(@"Delegate Executed!");

    NSLog(@"Delegate color: %@",color);

    if ([color isEqualToString:@"green"]) {

        [self.tableView setBackgroundColor:UIColorFromRGB(0x538C71)];

        [[NSUserDefaults standardUserDefaults] setObject:@"green" forKey:@"currentColor"];

        [self.tableView reloadData];

    }

    else if ([color isEqualToString:@"blue"]) {

        [self.tableView setBackgroundColor:UIColorFromRGB(0x346EA7)];

        [[NSUserDefaults standardUserDefaults] setObject:@"blue" forKey:@"currentColor"];

        [self.tableView reloadData];

    }

    else if ([color isEqualToString:@"purple"]) {

        self.view.backgroundColor =UIColorFromRGB(0x6D3E9C);

        

        [[NSUserDefaults standardUserDefaults] setObject:@"purple" forKey:@"currentColor"];

}
}

Reageer


AppChanger  Laurens heeft nog geen Studiekaart. Klokje02 aug 2015, 15:56
Avatar
Avatar
Berichten:301
Fans:13


Hallo Max,

Je kan eens proberen om volgende regel toe te voegen aan InstellingenController.m: @synthesize delegate;

Bekijk anders deze eens : http://stackoverflow.com/questions/626898/how-do-i-create-delegates-in-objective-c

Als je het dan nog niet lukt, post je best je project eens via dropbox of zo. Dat maakt het debuggen makkelijker ;-)

Met vriendelijke groeten,

Laurens

Reageer