【发布时间】:2017-03-23 06:58:20
【问题描述】:
为什么字符串值得到空值。有人请找出错误吗? 当从 SecondViewController 调用该方法时,我如何获取字符串值我需要另一个字符串还是有人请提出一些更正建议。
我需要这个字符串有一些价值
@property (nonatomic,strong) NSString *str;
当下面的方法被调用时。
[查看getTotal];
标签在第一个视图控制器中。
提前致谢。
在 ViewController.m 中
#import "ViewController.h"
#import "SecondViewController.h"
@interface ViewController ()
{
NSInteger total;
}
@property (weak, nonatomic) IBOutlet UILabel *lbl;
@property (weak, nonatomic) IBOutlet UIButton *btn;
@property (nonatomic,strong) NSString *str;
- (id)initWithInitialNumber:(NSInteger)initialNumber;
- (void)addNumber:(NSInteger)newNumber;
- (NSInteger)getTotal;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"%@",_str);
self.lbl.text = _str;
// Do any additional setup after loading the view, typically from a nib.
}
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
NSLog(@"viewDidAppear called");
[self viewDidLoad];
}
-(id)initWithInitialNumber:(NSInteger)initialNumber{
total = initialNumber;
return self;
}
-(void)addNumber:(NSInteger)newNumber{
total += newNumber;
}
-(NSInteger)getTotal{
NSLog(@"Number is: %ld",total);
self.str = [NSString stringWithFormat:@"%ld",total];
NSLog(@"%@",self.str);
return total;
}
- (IBAction)btnAct:(id)sender {
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
SecondViewController *SC = [sb instantiateViewControllerWithIdentifier:@"SC"];
[self presentViewController:SC animated:YES completion:nil];
}
-(NSString *)str{
return _str;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
在 SecondViewController.m 中
#import "SecondViewController.h"
#import "ViewController.h"
@interface SecondViewController ()<Sendata>
{
NSInteger *num;
}
@end
@implementation SecondViewController
- (IBAction)backBtn:(id)sender {
ViewController *VC = [self.storyboard instantiateViewControllerWithIdentifier:@"VC"];
[self presentViewController:VC animated:YES completion:nil];
}
- (void)viewDidLoad {
[super viewDidLoad];
ViewController *view = [[ViewController alloc]initWithInitialNumber:10];
view.delegate = self;
[self Print:@"Hello"];
[view addNumber:2];
[view getTotal];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)Print:(NSString *)str{
NSLog(@"%@",str);
}
@end
【问题讨论】:
-
首先清除您的问题,您使用哪个控制器获得了空值?以及何时需要价值以及哪种类型?
-
好的,检查编辑。谢谢
-
- (IBAction)backBtn:(id)sender { ViewController *VC = [self.storyboard instantiateViewControllerWithIdentifier:@"VC"];风险投资。 str = 字符串(数字); [自我presentViewController:VC动画:YES完成:无]; }
-
@HimanshuMoradiya 先生,我想在调用 getTotal 方法时将值分配给字符串;有可能这样做吗?如果是,请建议一些代码。我也可以执行您建议的代码。
-
我建议您在 NSUserDefault 中设置一个值并从中检索值您的问题解决了您没有调用任何其他我认为的方法。因为第一次在您的控制器中,当您移动控制器时您得到空值,然后您从第二个控制器设置一个值,当您返回它的值 nil 所以我建议您只在 NSuserdefault 中设置值
标签: ios objective-c iphone