私は、xcode プロジェクトをストーリーボード スタイルに更新することに取り組んでおり、古い xcode xib の 3 つのビューを新しいストーリーボード スタイルの 3 つのビュー コントローラーに変更しました。1 つのビュー コントローラーからデータを渡すために作成した文字列に問題があります。その他、生年月日などの詳細情報を取得するために3番目のView Controllerに切り替えると、最初のデータを含む最初のラベルが空白になります。
私は3つのView Controllerを持っています。1 つ目は、文字列 *concentrationString と *DOBString がある場所です。これは、他のビューで選択されているデータが表示される場所です。
FirstViewController.h
@interface FirstViewController : UIViewController {
IBOutlet UILabel *concentrationlabel;
IBOutlet UILabel *DOBlabel;
}
@property (strong, nonatomic) NSString *concentrationString;
@property (strong, nonatomic) NSString *DOBString;
FirstViewController.m
#import "FirstViewController.h"
#import "SecondViewController.h"
@interface FirstViewController ()
@end
@implementation FirstViewController
@synthesize concentrationString, DOBString;
...
- (void)viewDidLoad
{
[super viewDidLoad];
concentrationlabel.text = concentrationString;
DOBlabel.text = DOBString;
...
SecondViewController.m には、私が見つけた prepareForSegue のものを使用して濃度ラベルにどの値を入れるかを最初のビュー コントローラに指示する薬用のボタンがいくつかあります。
#import "SecondViewController.h"
#import "FirstViewController.h"
...
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"Adrenaline"]) {
NSString *concentrationString = @"Adrenaline";
FirstViewController *vc = [segue destinationViewController];
vc.concentrationString = concentrationString; }
else if ([segue.identifier isEqualToString:@"Morphine"]) {
NSString *concentrationString = @"Morphine";
FirstViewController *vc = [segue destinationViewController];
vc.concentrationString = concentrationString; }
クリックされたボタンに応じて、最初のビューのラベルが「アドレナリン」または「モルヒネ」に更新されました。
ユーザーが ThirdViewController.m に移動してピッカーから患者の生年月日を選択し、prepareForSegue メソッドを使用してその値を送り返すと、concentrationString への変更を指定していませんが、最初のラベルが空白になります。
#import "DOBViewController.h"
#import "FirstViewController.h"
@interface DOBViewController ()
@end
@implementation DOBViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad {
NSDate *now = [NSDate date];
[picker setDate:now animated:YES];
[DOBset setTitle:@"Date of birth" forState:UIControlStateNormal];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(IBAction)displayDate:(id)sender {
// NSDate * selected = [picker date];
// NSString * date = [selected description];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"dd-MMMM-yyy"]; //24hr time format
NSString *dateString = [outputFormatter stringFromDate:picker.date];
[DOBset setTitle:dateString forState:UIControlStateNormal];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"DOB"]) {
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"dd-MMMM-yyy"]; //24hr time format
NSString *DOBString = [outputFormatter stringFromDate:picker.date];
FirstViewController *vc = [segue destinationViewController];
vc.DOBString = DOBString;
}
}
@end
これをどのように機能させる必要がありますか?前もって感謝します。
よろしく、カート。