2

アプリに Tapku カレンダーを追加しようとしています。ストーリーボードを使用しています。Tapku ライブラリを追加し、必要なファイルをインポートして、TKCalendarMonthViewDelegate メソッドを追加しました。calendarViewというUIViewにカレンダーを追加しています。アプリを実行すると、カレンダーは表示されず、何も入っていないビューだけが表示されます。

-(void)viewDidLoad
{
[super viewDidLoad];
[self.navigationController setNavigationBarHidden:NO animated:YES];

self.navigationItem.hidesBackButton = YES;
calendar =  [[TKCalendarMonthView alloc] init];
calendar.delegate = self;
calendar.dataSource = self;
calendar.frame = CGRectMake(0, 0, calendar.frame.size.width, calendar.frame.size.height);

// Ensure this is the last "addSubview" because the calendar must be the top most view layer
[self.view addSubview:calendar];
[calendar reload];

// Do any additional setup after loading the view.
}

誰でも私を助けてもらえますか?

4

2 に答える 2

2

このように、フレームポイントを直接指定してみてください

calendar.frame = CGRectMake(0, 0, 320,400);
于 2013-02-13T09:09:40.090 に答える
1

Storyboard を使用して TKCalendarMonthView をビュー コントローラーに追加する場合、ビュー コントローラーの -viewDidLoad メソッドで TKCalendarMonthView の別のインスタンスも初期化しないでください。

ストーリーボードで:

  • ビュー コントローラーに TKCalendarMonthView を追加します。
  • サイズ制約を設定します。
  • TKCalendarMonthView をビュー コントローラーのアウトレット (以下を参照) に接続します。

ビューコントローラーで:

TKCalendarMonthView のアウトレットを追加します。

@interface YourViewController () <TKCalendarMonthViewDataSource, TKCalendarMonthViewDelegate>
@property (weak, nonatomic) IBOutlet TKCalendarMonthView *calendarMonthView;
@end

-viewDidLoad で、TKCalendarMonthView のデリゲートとデータ ソースを接続します。TKCalendarMonthView.h のデリゲートおよび dataSource プロパティに IBOutlet 注釈を最初に追加すると、ストーリーボードでもこれを実行できることに注意してください。

@implementation YourViewController
...
- (void)viewDidLoad
{
    [super viewDidLoad];
...
    self.calendarMonthView.delegate = self;
    self.calendarMonthView.dataSource = self;

ただし、これらの変更だけでは、TKCalendarMonthView でカレンダーを表示することはできません。その理由は、ストーリーボードによってビューが初期化されていますが、ストーリーボードによってロードされたときに既存の -init メソッドが呼び出されないためです。そのため、-initWithCoder: メソッドを TKCalendarMonthView.m に追加する必要があります。次の例では、デフォルトの -init: メソッドを呼び出します。

-(id)initWithCoder:(NSCoder *)aDecoder
{
    self = [self init];
    if (self) {

    }

    return self;
}

これをすべて行うと、空白のビューではなく、レンダリングされたカレンダーが表示されます。

于 2014-11-22T23:33:52.897 に答える