2013-08-19 34 views
0

我已经浏览了关于此问题的其他主题,但我一直无法确定我的错误。从继承类实现方法的麻烦-ios

我对IOS编程非常陌生。我试图创建一个程序,查看2个按钮的选定状态并确定按钮选择状态是否相同。

我目前正在尝试使用模型来确定按钮选择状态,然后将状态传递给标签。我有说了一个错误:

为“MatchTest”不可见@interface声明选择“doesItMatch”

我很理解,可以提供任何帮助。
谢谢!

这是MatchTest.h文件

// MatchTest.h 
#import <Foundation/Foundation.h> 

@interface MatchTest : NSObject 
@end 

这是MatchTest.m文件

// MatchTest.m 
#import "MatchTest.h" 

@implementation MatchTest 

-(NSString*)doesItMatch:(UIButton *)sender 
{ 
    NSString* tempString; 

    if(sender.isSelected) 
    { 
     tempString = @"selected"; 
    } 
    else 
    { 
     tempString = @"not selected"; 
    } 

    return tempString; 
} 
@end 

这是MatchViewController.h文件

// MatchViewController.h 
#import <UIKit/UIKit.h> 
#import "MatchTest.h" 
@interface MatchViewController : UIViewController 
@end 

这是MatchViewController .m文件

// MatchViewController.m 
#import "MatchViewController.h" 
@interface MatchViewController() 

@property (weak, nonatomic) IBOutlet UILabel *matchLabel; 
@property (strong, nonatomic) MatchTest *match; 

@end 

@implementation MatchViewController 

-(MatchTest *)match 
{ 
    if(!_match) _match = [[MatchTest alloc] init]; 
    return _match; 
} 

- (IBAction)button:(UIButton *)sender 
{ 
    sender.selected = !sender.isSelected; 
    self.matchLabel.text = [self.match doesItMatch:sender]; 
} 
@end 

回答

2

申报MatchTest.h doesItMatch方法文件 像

在MatchTest.h

-(NSString*)doesItMatch:(UIButton *)sender; 

编译器不能对文件doesItMatch方法在.h文件中说的声明为什么错误是存在的。

+0

你太棒了!非常感谢。修复了这个问题。 你是否总是需要在.h文件中声明类似的方法。一般来说,我是基于C编程的新手。 – demuro1

+0

是的,你需要声明,特别是当你在课堂本身调用它时。但如果你在同一个班级中打电话,这不是必需的。如果在.h文件中的声明方法是很好的编程习惯。 – Suryakant

+0

接受。将不知道有关该问题的任何 感谢关于.h问题的答复! – demuro1

0

你还没有定义你的方法-(NSString*)doesItMatch:(UIButton *)senderMatchTest.h文件。 您正在导入MatchTest.h文件 in MatchViewController.h文件因此您需要定义您的方法或变量或属性以使此方法可用。

因此,根据您的错误日志,viewController无法找到声明此方法的接口。