2012-11-09 56 views
0

我想让输入的文本字段中的值更改下一个ViewController的背景颜色,但该值无法在第二个视图控制器中读取。如何让这个它承认的价值?通过ViewControllers传递整数

ViewController.h:

#import <UIKit/UIKit.h> 
@interface ViewController : UIViewController <UIImagePickerControllerDelegate,   UINavigationControllerDelegate>{  
IBOutlet UITextField *valueTextField; 
} 
- (IBAction)save:(id)sender; 
@end 

ViewController.m:

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
// Get the stored data before the view loads 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
int value = [defaults integerForKey:@"value"]; 
NSString *valueString = [NSString stringWithFormat:@"%i",value]; 
// Update the UI elements with the saved data 
valueTextField.text = valueString; 

[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
} 

- (void)didReceiveMemoryWarning 
{ 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 

- (IBAction)save:(id)sender { 
[valueTextField resignFirstResponder]; 
int value = [[valueTextField text] integerValue]; 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setInteger:value forKey:@"value"]; 
[defaults synchronize]; 
NSLog(@"Data saved"); 
} 

@end 

NextViewController.h:

#import <UIKit/UIKit.h> 
@class ViewController; 
@interface NextViewController : UIViewController 
@end 

NextViewController.m:

#import "NextViewController.h" 
#import "ViewController.h" 

@interface NextViewController() 

@end 

@implementation NextViewController 

-(IBAction)displayClicks:(id)sender 
{ 
if(value<20) 
{ 
    self.view.backgroundColor = [UIColor redColor]; 
} 
else { 
    self.view.backgroundColor = [UIColor greenColor]; 
} 

} 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
if (self) { 
    // Custom initialization 
} 
return self; 
} 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view. 
} 

- (void)didReceiveMemoryWarning 
{ 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 

@end 

回答

0

首先它不是好点的调用父类的方法毕竟。

- (void)viewDidLoad 
{ 

[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

// Get the stored data before the view loads 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
int value = [defaults integerForKey:@"value"]; 
NSString *valueString = [NSString stringWithFormat:@"%i",value]; 
// Update the UI elements with the saved data 
valueTextField.text = valueString; 

} 

和在第二视图控制器中,您从UserDefaluts中读取“value”的值?

-(IBAction)displayClicks:(id)sender 
{ 
if(value<20) 
{ 
    self.view.backgroundColor = [UIColor redColor]; 
} 
else { 
    self.view.backgroundColor = [UIColor greenColor]; 
} 

} 

从你的身上,其中如果(价值< 20)? 也许你前壳服用吗?

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    int value = [defaults integerForKey:@"value"]; 
+0

对不起,我不明白任何 – user1575528

+0

从哪里你把价值比较的? “如果(值<20)” –