0

私は Objective C を初めて使用することを伝えさせてください。Big Nerd Ranch の本を読み終えたばかりで、もっと学ぶために本当にシンプルで基本的なアプリを作成したいと思っています。私のアイデアは、2 つの日付の間の週を計算するアプリを作成することでした。そのためのクラスを作成してテストしました。それはうまくいきます。

以下に示すように、ビューを (プログラムで) 作成しました。1 つは日付付きで、もう 1 つは開始日または終了日をクリックすると表示されます。

日付を選択して「週の計算」ボタンをクリックすると、最初のビューに戻ります。いいえ、私の大きな質問は、この選択した値をメイン画面に戻すにはどうすればよいですか? いくつかの可能性を試し、ウェブで情報を検索しましたが、うまくいきませんでした。これは本当に簡単なはずですが、現時点ではそうではありません。:-)

「開始日」と「終了日」の値を含む NSMutableArray を作成しました。私の考えは、SelectDateView からこの配列に UILabel の値を追加することでした。そのための入力ビューにプロパティを作成しまし@property (readwrite, retain) NSMutableArray *datesArray;た。

selectDateViewController で別のプロパティを作成した@property (nonatomic, assign) BITInputViewController *ivc;ので、(私の意見では)datesArray に値を追加できます。

このメソッドが呼び出される日付を選択すると、SelectDateView の UILabel では機能しますが、datesArray では何もしません。

- (void)LabelChange:(id)sender{

NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateStyle = NSDateFormatterMediumStyle;

dateLabel.text = [NSString stringWithFormat:@"%@",
                  [df stringFromDate:datePicker.date]];

[ivc.datesArray addObject:dateLabel.text];

if (ivc.datesArray) {

    for (NSString *d in ivc.datesArray) {
        NSLog(@"This is in datesArray %@",d);
    }
}else NSLog(@"!ivc.datesArray");

}

アプリをテストして日付を選択すると、ログ ファイルに常に "!ivc.datesArray" が表示されます。

ivc.datesArray のこのチェックも行います。これでこの-(void)viewWillAppear:(BOOL)animated 日付を設定すると、現在の日付が表示されます。- (void)viewDidLoad dateLabel.text = [NSString stringWithFormat:@"%@",[df stringFromDate:[NSDate date]]];

(入力ビューで配列を印刷すると、開始日と終了日は表示されますが、選択した日付は表示されません。)

うまくいけば、誰かがこれについて私にいくつかの指針を与えることができます.

4

1 に答える 1

0

あなたのview1.mファイルでNSString* date 上記を宣言し、最初のクラスでメソッドを作成します。それは次のようなものでなければなりません@interface

-(void)passDate:(NSString *)dateString
{

  date = [NSString stringWithFormat:@"%@",dateString];

}

and in your second class create object of first class like
View1 * vc = [[View1 alloc]init];
[vc passDate:df];

それがうまくいくことを願っています。NSStringプロパティの前に宣言し@interfaceて合成する必要はありません。

于 2013-03-01T12:18:31.597 に答える