2

別のviewcontrollerに変数を設定したいので、そこにスワップしたときにそこにあるようにします。コードは次のとおりです。

CalendarMonthViewController.m

#import "ViewControllerInsert.h"
...

- (void) calendarMonthView:(TKCalendarMonthView*)monthView didSelectDate:(NSDate*)date{
    NSLog(@"Date Selected: %@",date);


    ViewControllerInsert *controller = [[ViewControllerInsert alloc] initWithNibName:@"ViewControllerInsert" bundle:nil];
    controller.dateSelected = date;

    [self.tableView reloadData];
}

ブレークポイントまたは NSLog の場合、日付はここで有効です

ViewControllerInsert.h

#import <UIKit/UIKit.h>

@interface ViewControllerInsert : UIViewController

@property(nonatomic, strong) NSDate *dateSelected;

@end

ViewControllerInsert.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.


    NSDate *ds = self.dateSelected;

    NSString *dss = [NSString stringWithFormat:@"%@", ds];

    NSLog(@"works %@",dss);
}

NULL を出力します

正しく初期化していないか、obj がヒープから外れています。「強」でいけないのはどれ?

4

5 に答える 5

3

View Controller のインスタンスを作成したからといって、iOS がそのインスタンスを表示するときにそのインスタンスを使用するとは限りません。なぜでしょうか?iOS はインスタンスの使用をどのように認識しますか? チェーンには入っていません。

代わりに、セグエを使用して、あるビュー コントローラーから次のビュー コントローラーに移動します。元のView Controllerで、prepareForSegueのように宛先のView Controllerを参照できます[segue destinationViewController]

次に、宛先ビュー コントローラーでカスタム プロパティを設定できますprepareForSegue

于 2013-07-26T12:50:16.357 に答える
1

この手順に従う必要があります

 @interface ViewControllerInsert : UIViewController
  {
    NSDate *dateSelected;
   } 

 @property(nonatomic, assign) NSDate *dateSelected;



    @end


   and in .m file synthyse it like

     @synthesize dateSelected;
于 2013-07-26T12:50:57.520 に答える
1

そのため、「viewDidLoad」メソッドの呼び出しは、プロパティ「self.dateSelected」のセッターを呼び出した後に呼び出されることを保証しません。

于 2013-07-26T12:41:49.223 に答える