作者Senkousha ( )
看板MacDev
标题Re: [问题] 函式读不到/Not Fully implement??
时间Mon Jul 26 02:48:33 2010
※ 引述《inzaghi0507 (KaKa)》之铭言:
: 因为我有在表头档中使用<UITableViewDataSource>
: 所以numberOfRowInSection 和 cellForRowAtIndexPath都必须去实作
: (这样说不知道对不对^^)
正确说来,完整的 selector 应该说是
tableView: numberOfRowsInSection:
和
tableView: cellForRowAtIndexPath:
两个冒号後面各跟着一个参数,都是总共两个参数的函式。
如果使用自动补完,
或者 command 双击 "UITableViewDataSource" 打开定义的 .h 档,可以看到
tableView: numberOfRowsInSection:
实际是定义为这样(太长了,我分两行,意思一样):
- (NSInteger)tableView:(UITableView *)table
numberOfRowsInSection:(NSInteger)section;
它的回传值 type 是定义最前面的 (NSInteger),
第一个参数的 type 是第一个冒号後面的 (UITableView *),名称为後面的 "table"
第二个参数的 type 是第二个冒号後面的 (NSInteger),名称为後面跟着的 "section"
而 .h 档中可以看到两函式上方有个 @required 标记,
这就是为什麽宣告支援 <UITableViewDataSource> 的类别必须实作这两个函式的原因。
底下的 @optional 部份,就不一定要实作了。
: 但遗憾的是在尝试输入这两个方法时 会找不到这个方法
: (显示No completions Found)
: http://img689.imageshack.us/img689/5598/macosxleopard2010072222.png
: http://img708.imageshack.us/img708/5598/macosxleopard2010072222.png
: 所以程式就无法编译成功了
: 但非常奇特的是把范例的程式码贴到我的程式里却又可以WORK了(已检查过都一模一样)
: 研究了很久却不知道为什麽这样
: 请问各位高手有遇到类似的问题或是知道为什麽吗?
: 谢谢
试了一下,看来要 auto-complete 完整的:
tableView: numberOfRowsInSection
必须从打 table 时就按 Esc,
一旦输入完冒号後,即使字串都一样,也无法自动补完了。
至於原po整行输入完仍有 warning 的原因,
则是因为打成 tableView: numberOfRowInSection:
而非正确的 tableView: numberOfRowsInSection:
... 正巧就是为什麽我们需要自动补完的原因 ...
※ 编辑: Senkousha 来自: 220.136.168.82 (07/26 02:56)
※ 编辑: Senkousha 来自: 220.136.168.82 (07/26 02:56)
※ 编辑: Senkousha 来自: 220.136.168.82 (07/26 02:57)
1F:推 inzaghi0507:感谢详细的解说 少了那个S的部分之後有发现到了 07/26 23:03
2F:→ inzaghi0507:检查了很多次才发现 真的是当局者迷XD 07/26 23:04