나는 objective-c에서 새롭습니다. 부모보기로 데이터를 전달하는 모달보기가있는 앱을 만들고 있습니다. 나는 프로토콜 대리자를 구현하고 데이터는 전달되지만 다른 메서드 내에서 지속되지 않습니다. 전달 된 값으로 무언가를하려고하면 대리자 메서드 외부에서 null이되는 것 같습니다. 델리게이트 메서드 내에서 NSLog를 수행하고 그 값이 존재하지만, 다른 메서드에서 값을 사용하고자 할 때 놓친 것 같습니다. ARC를 사용하지 않습니다.사용자 지정 대리자 메서드가 실행되지만 다른 메서드 내에서 값이 유지되지 않습니다
내 홈페이지 ViewController.h :
@protocol ModalViewDelegate
- (void)didReceiveWeight:(NSString *)weight andUnit:(NSString *) unit;
@end
@interface LogWeightTableViewController : UITableViewController<ModalViewDelegate> {
NSNumber *weightPassed;
}
@property (nonatomic, retain) IBOutlet UILabel *WeightSelected;
//...
내 홈페이지 ViewController.m :
//...this method is triggered ok, and _weightPassed has the value.
- (void)didReceiveWeight:(NSString *)weight andUnit:(NSString *)unit{
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
_weightPassed = [f numberFromString:weight]; //_weightPassed have null in another methods
[f release];
NSString *value = [[[NSString stringWithString:weight] stringByAppendingString:@" "] stringByAppendingString:unit];
[WeightSelected setText:valor];
}
내 ModalView.h :
@property (nonatomic, assign) id<ModalViewDelegate> delegate;
내 ModalView.m :
- (void)viewDidLoad
{
//...
LogWeightTableViewController *logWeightTVC = [[LogWeightTableViewController alloc]init];
self.delegate = logWeightTVC;
//...when i press a button to go back to main view call the delegate method:
[delegate didReceiveWeight:valor andUnit:unidad];
나의 MainViewController.my에가는
내 _weightPassed 뭔가를하고 싶지 :
- (IBAction)saveLogToDataBase:(id)sender {
// ... do some stuff
[row setKg: _weightPassed]; //<-- here _weightPassed is null
내가, 내가 몇 가지 중요한 개념이나 뭔가를 놓친 것 같아 누군가가 H2CO3으로이
이제 _datePassed 또는 _weightPassed를 사용합니까? –
죄송합니다. 코드를 편집했습니다. _weightPassed입니다. – sheinix
아마도'_weightPassed = [[f numberFromString : weight] retain]'을 사용할 것입니까? –