【问题标题】:How to connect delegate and data source?如何连接委托和数据源?
【发布时间】:2015-01-04 07:41:45
【问题描述】:

我正在尝试按照这些说明进行操作,但现在我被卡住了。

在您的视图控制器中: 为 TKCalendarMonthView 添加一个出口。

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

在-viewDidLoad中,连接TKCalendarMonthView的delegate和数据源。请注意,如果您首先将 IBOutlet 注解添加到 TKCalendarMonthView.h 中的委托和数据源属性,您也可以在 Storyboard 中执行此操作

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

我的项目中有这个代码,但是我运行它我得到了这个

#import "ViewController.h"
#import "TapkuLibrary.h"
#import "TKCalendarMonthView.h"

@interface ViewController () <TKCalendarMonthViewDataSource, TKCalendarMonthViewDelegate>

@property (weak, nonatomic) IBOutlet TKCalendarMonthView *calendarMonthView;

@end


@implementation ViewController Method 

- (void)viewDidLoad {
[super viewDidLoad];

self.calendarMonthView.delegate = self;
self.calendarMonthView.dataSource = self;

// Do any additional setup after loading the view, typically from a nib.


}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

它成功加载但由于 calendarMonthView:marksFromDate:toDate:'in 协议 'TKCalendarMonthViewDataSource' 未实现而停止

我想我的问题是如何在我的 viewDidLoad 中连接 TKCalendarMonthView 委托和数据源,因为那是我在说明中没有做的,因为我不知道怎么做,我认为这就是造成这种情况的原因。

感谢您的宝贵时间!

【问题讨论】:

  • 查看以下内容:Connect User Interfaces to Code,这将使您走上正轨。我还建议您查看Ray Wenderlich 了解一些基本的故事板教程
  • Command + 单击 TKCalendarMonthViewDataSource 并查看 .h 文件中的 calendarMonthView:marksFromDate:toDate 方法。你需要在你的类中实现这个方法。
  • 我 Command + 点击了 'TKCalendarMonthViewDataSource',它把我带到了 .h 文件并突出显示了这个 '@protocol TKCalendarMonthViewDataSource '。如何在 .h 文件中实现 'calendarMonthView:marksFromDate:toDate'? @WorldOfWarcraft
  • 可以看到protocol里面的方法,而在你的viewController中,你需要实现这个方法,所以把这个方法复制到你的viewController.m文件中并填写。

标签: ios objective-c tapku


【解决方案1】:

再读一遍,上面写着没有实现

也就是说,你需要在你的代码中实现calendarMonthView:marksFromDate:toDate:...

关于委托,您已经在 viewDidLoad 中使用了以下语句。

self.calendarMonthView.delegate = self;
self.calendarMonthView.dataSource = self;

【讨论】:

    【解决方案2】:

    需要实现DataSource协议的“calendarMonthView:marksFromDate:toDate”这个方法

    【讨论】:

      猜你喜欢
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      • 2017-03-13
      • 2012-02-03
      • 2012-07-01
      相关资源
      最近更新 更多