1

プロジェクトで Kal カレンダーを使用しようとしています。これまでのところ、私が理解していることは次のとおりです。

  • Kal を呼び出すビュー コントローラーは、UITableViewDelegate メソッド「didSelectRowAtPath」を実装する必要があります。

問題:

  • Kal を呼び出すビュー コントローラーには、既に既存のテーブルビューがあります (セルの 1 つが Kal を呼び出します)。

これを解決するために、次のようにメイン テーブルビューのセルから中間ビュー コントローラーをプッシュしようとしました。

ScheduleViewController *svc = [[ScheduleViewController alloc] init];
[svc setTitle:@"Schedule"];
[self.navigationController pushViewController:svc animated:YES];

ScheduleViewController の viewDidLoad から、実際の Kal カレンダーをプッシュしています。

KalViewController *kal = [[KalViewController alloc] init];
[kal setDelegate:self];
[kal setTitle:@"Schedule"];
[self.navigationController pushViewController:kal animated:NO];

これを行うと、カレンダーが表示されます。ただし、戻るボタンを使用してメイン メニューにきれいに戻れないようです。ScheduleViewController に戻るボタンを作成しました。

[kal.navigationItem
setBackBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"Back"
                                                     style:UIBarButtonItemStyleBordered
                                                    target:self
                                                    action:@selector(test)]];

これをいくつかの異なる場所 (viewDidLoad、viewWillAppear) に配置しましたが、機能しません。「戻る」をクリックすると、ずっと戻るのではなく、ScheduleViewController に移動します。「test」は呼び出されません。popToRootViewController、[[self.presentingViewControllerpresentingViewController]dismissViewController]、および他のいくつかを試しました。働きたくないだけ。

  • これは Kal を使用するための最良の方法ですか?
  • このメソッドを使用して popToRootViewController (ScheduleViewController をスキップ) するにはどうすればよいですか?

ありがとう!これは私の最初の投稿です。質問の混乱を減らすためにできることがあれば教えてください。

4

1 に答える 1

0

うーん、やっと手に入ったと思います。結局、中間ビューコントローラーを削除しました。以前は何が起こっていたのか理解できていなかったと思います...現在、次のことを行っています。

  • メイン ビュー コントローラー (既存のテーブルビューを使用) をデリゲートにする代わりに、KalDataSource も UITableViewDelegate にしました。したがって、私の DataSource は、カレンダーへの入力とイベントの選択の両方を処理します。

  • メイン ビュー コントローラに ivar のように id データソースを追加

  • 「didSelectRowAtPath」メソッドを次のように変更しました。

    dataSource = [[EventsDataSource alloc] init];

    KalViewController *kal = [[KalViewController alloc] init]; [kal setDelegate:dataSource]; [kal setDataSource:dataSource]; [kal setTitle:@"Schedule"]; [self.navigationController pushViewController:kal アニメーション:YES];

すべて問題ないようです。

于 2012-11-04T14:35:25.700 に答える