私は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
重要な概念か何かが欠けていると思います。誰かがこれを手伝ってくれることを願っています