在一门课程中,我有以下内容 AlertEditorContainerViewController.m
#import "AlertEditorContainerViewController.h"
@interface AlertEditorContainerViewController ()
-(void)swapViewControllers;
@end
@implementation AlertEditorContainerViewController
@synthesize currentSegueIdentifier;
@synthesize segIndex;
- (void)swapViewControllers
{
self.currentSegueIdentifier = ([self.currentSegueIdentifier isEqual: SegueIdentifierFirst]) ? SegueIdentifierSecond : SegueIdentifierFirst;
[self performSegueWithIdentifier:self.currentSegueIdentifier sender:nil];
}
@end
我尝试称之为另一个班级 AlertEditorViewController.h
@interface AlertEditorViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
{
AlertEditorContainerViewController *containerViewController;
}
AlertEditorViewController.h #import“AlertEditorViewController.h”
@implementation AlertEditorViewController
- (IBAction)segmentSwitchValueChanged:(id)sender
{
[containerViewController swapViewControllers];
}
@end
这给出了错误“没有可见的@interface for AlertEditorContainerViewController声明选择器swapViewControllers'
我查了所有其他类似的查询,他们似乎都指向我在代码中找不到的错别字等。
答案 0 :(得分:2)
在-(void)swapViewControllers
文件中声明AlertEditorContainerViewController.h
,而不是.m
文件。
有关此问题的信息,您需要查看this Stack Overflow question,但简而言之,通过在@interface
文件中的.m
块中声明方法,即可重新有效地使它成为一个私有方法(其他实现文件无法访问)。从链接:
实现文件中的接口部分允许您声明私有的变量,属性和方法,这意味着其他类不会看到它们。
编译器知道它在该特定文件的范围内,但其他文件无法访问,甚至无法将该方法视为已定义。