0

这是我的第一篇文章,谢谢,你很有帮助。但我被困住了。我试图实现:xcode init controller with data

当我用新参数初始化控制器时,我得到:没有可见的@interface for 'VisiteViewController' 声明选择器'initWithNibName:bundle:texte:'

在 VisiteViewController.m 我有:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil texte:(NSString *)chaine{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;}

我这样称呼它:

- (IBAction)goToVisite: (id)sender{
NSLog(@"Button pushed");
VisiteViewController *visiteViewController = [[VisiteViewController alloc] initWithNibName:@"VisiteViewController" bundle:nil texte:@"lkj"];
[self.navigationController pushViewController:visiteViewController animated:YES];
}

谢谢你的帮助

4

1 回答 1

0

您好,欢迎来到 StackOverflow!

正如@janusfidel 提到的,您需要将声明添加到头文件(.h)中。

您没有更改方法,而是创建了一个全新的方法(巧合的是,它的名称看起来有点像现有方法之一,但计算机对此没有概念)。您现在必须向使用您的类的每个人宣布有一个新方法,其选择器(名称,基本上)是initWithNibName:bundle:texte:. 这不会覆盖、删除或以其他方式与方法交互initWithNibName:bundle:,也不会与方法init或任何其他方法交互。名称的相似性基本上只是为了给人类读者(即你)一个关于这些方法做什么的线索[1]。

请不要把它当成个人,但请帮自己一个忙,并获得一本关于 Objective-C 编程(或一般的面向对象编程)的好书。这将使您的第一步容易和更快。The Big Nerd Ranch Guides 是一本优秀的系列书籍,我建议你尽快购买iOS Programming: The Big Nerd Ranch Guide

[1]:从技术上讲,有一些命名指南也为编译器提供了有关如何在 Objective-C 中处理内存管理的线索,但现在进入这些内容只会让人感到困惑。

于 2012-06-27T09:09:02.380 回答