使用现有表视图中的Kal日历和popToRootViewController无法正常工作

时间:2012-11-04 05:11:49

标签: ios popviewcontroller

我正在尝试在我的项目中使用Kal日历。到目前为止,我理解的情况如下:

  • 无论哪个调用Kal的视图控制器都必须实现UITableViewDelegate方法“didSelectRowAtPath”

问题:

  • 我的视图控制器调用Kal 已经有一个现有的tableview(其中一个单元格会调用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而不是一直返回。 “测试”永远不会被调用。我试过popToRootViewController,[[self.presentingViewController presentsViewController] dismissViewController]和其他几个。只是不想工作。

  • 这是使用Kal的最佳方式吗?
  • 如何使用此方法popToRootViewController(跳过ScheduleViewController)?

谢谢!这是我的第一篇文章,所以请告诉我是否有什么办法可以让这个问题不那么混乱。

1 个答案:

答案 0 :(得分:0)

嗯,我想,终于明白了。我最终删除了中间视图控制器。我想我只是不明白之前的情况......我现在已经完成了以下工作:

  • 而不是我的主视图控制器(w /现有的tableview)是委托,我使KalDataSource也成为UITableViewDelegate。所以我的DataSource处理填充日历和选择事件。

  • 在主视图控制器

  • 中添加id数据源,如ivar中所示
  • 将“didSelectRowAtPath”方法更改为:

    dataSource = [[EventsDataSource alloc] init];

    KalViewController * kal = [[KalViewController alloc] init]; [kal setDelegate:dataSource]; [kal setDataSource:dataSource]; [kal setTitle:@“Schedule”]; [self.navigationController pushViewController:kal animated:YES];

现在的所有内容都可以。