0

ベローボタンを非表示にして、ボタンが非表示になっているかどうかに関係なく保存する委任システムがありますNSUserDefault。しかし、何らかの理由で機能していないので、誰か助けてもらえますか?

ここに levelComplete コードがあります... .h

#import <UIKit/UIKit.h>
#import "levelComplete.h"
#import "LevelSelector.h"

@interface levelComplete : UIViewController{
  }
 @property (nonatomic, strong) id<CustomDelegate> delegatePpty;

 @end

.m

@implementation levelComplete
@synthesize delegatePpty;

-(void)someAction
 {
[self.delegatePpty hideUnhidebutton:YES];//Call the delegate method to execute
 }


 - (void)viewDidLoad
   {
     [super viewDidLoad];
     // Do any additional setup after loading the view from its nib.
     [self someAction]; // Here I call my action
   }
@end

ここにleveSelectorコードがあります...

.h

  @protocol CustomDelegate <NSObject>
  -(void)hideUnhidebutton:(BOOL)value;
  @end

#import <UIKit/UIKit.h>
#import "levelComplete.h"
#import "LevelSelector.h"

@interface LevelSelector : UIViewController <CustomDelegate>{        

}

@property (nonatomic, strong) UIButton *level1;

@end

.m

@implementation LevelSelector
@synthesize level1;

-(void)hideUnhidebutton:(BOOL)value
 {
  [self.level1 setHidden:value];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSNumber numberWithBool:value] forKey:@"YourVariableKey"];
  }

 - (void)viewDidLoad
   {
    [super viewDidLoad];
     // Do any additional setup after loading the view from its nib

     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
     BOOL restoredBoolValue = [[defaults objectForKey:@"YourVariableKey"] boolValue];
    }
@end

前もって感謝します !!!

編集

Thanks for all of your help I have now got the code to correctly function 
4

2 に答える 2

2

私はあなたが代表団で何かが欠けていると思います、一度これを見てください

デリゲートクラス.h

#import <UIKit/UIKit.h>

@protocol CustomDelegate <NSObject>
-(void)hideUnhidebutton:(BOOL)value;
@end

@interface delegateclass : UIViewController <CustomDelegate>{        
id<CustomDelegate> delegate;
}
@property(retain) id delegate;

-(void)someMethod;
@end

デリゲートクラス.m

 #import "delegateclass.h"

 @implementation delegateclass
 @synthesize delegate;


 -(void)someMethod {

   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   BOOL restoredBoolValue = [[defaults objectForKey:@"YourVariableKey"] boolValue];
   [[self delegate] hideUnhidebutton:restoredBoolValue];

   }
 @end

TestViewController.h

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

 @interface TestViewController : UIViewController{
  delegateclass *delegateclassObj;
 }
  @property (nonatomic, strong) id<CustomDelegate> delegatePpty;
  @property (nonatomic, strong) UIButton *level1;
  @end

TestViewController.m

   #import "TestViewController.h"
   @implementation TestViewController
   @synthesize delegatePpty,level1;

  - (void)viewDidLoad
   {
    [super viewDidLoad];

    delegateclassObj = [[delegateclass alloc]init];
    [delegateclassObj setDelegate:self];
    [delegateclassObj someMethod];
   }
  //Implementaion for Delegatemethod......

   -(void)hideUnhidebutton:(BOOL)value
   {
   [self.level1 setHidden:value];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   [defaults setObject:[NSNumber numberWithBool:value] forKey:@"YourVariableKey"];
   }
   @end

申し訳ありませんが、あなたのテーマが何であるか正確にはわかりませんが、ここでは delegate メソッド (hideUnhidebutton:) を呼び出す必要があります。

それがあなたに役立つことを願っています..

于 2013-04-02T13:39:34.677 に答える
1

確認事項

levelComplete のインスタンスを作成する場合

[levelCompleteInstance setDelegatePpty:self];

NSUserDefaults を同期する

- (BOOL)synchronize
于 2013-04-02T13:34:59.697 に答える