这是我在stackoverflow上的第一篇文章,所以我会尽量清楚。 我是iPhone开发的初学者,如果我的问题是一个菜鸟,请提前原谅。 请原谅我的英文...
当UIViewController出现时,我正试图在一些UITextLabel中立即显示日期值。 但dateLabel和hourLabel不会更新。只有在超级初始化之后才设置断点,代码才能正常执行。
调用UIViewController CustomDatePicker
- (IBAction)setStartPointClicked:(id)sender {
_picker = [[CustomDatePicker alloc]initWithNibName:@"CustomDatePicker" bundle:nil];
_picker.delegate = self;
[self presentViewController:_picker animated:YES completion:^{
}] ;
}
调用iniWithNibName方法来初始化控制器
- (id) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if(!self) { //<=============Breakpoint
return nil;
}
[self.datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/MM/yyyy"];
NSString* str = [dateFormatter stringFromDate:_datePicker.date];
[_dateLabel setText:str];
NSLog(str);
[dateFormatter setDateFormat:@"HH:mm"];
str = [dateFormatter stringFromDate:_datePicker.date];
[_hourLabel setText:str];
NSLog(str);
return self;
}
我想我之前想要调用属性,他们有时间分配。如果我在每个标签字符串更改后放置断点,它就不会更新。只有在超级init和要执行的代码之间放置断点时,它们才会执行。断点是否给我的应用程序加载对象一些时间?
有什么想法吗? 谢谢提前
答案 0 :(得分:0)
将代码改为 viewDidLoad 。
答案 1 :(得分:0)
请尝试以下更改:
// The init... method. This is the iOS standard way of writing it
- (id) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if(self) {
}
return self;
}
// viewDidLoad method
-(void)viewDidLoad {
[self.datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/MM/yyyy"];
NSString* str = [dateFormatter stringFromDate:self.datePicker.date];
[self.dateLabel setText:str];
NSLog(str);
[dateFormatter setDateFormat:@"HH:mm"];
str = [dateFormatter stringFromDate:_datePicker.date];
[self.hourLabel setText:str];
NSLog(str);
}
希望这有帮助!