实际上我正在iPhone中测试一个示例应用程序...在用户界面中,如果我按下一个按钮“hello”消息应该显示在文本字段上...这样一种方式,当按下按钮时它应该调用一个方法存在于另一个类,即来自class2,并在UI上显示一条消息 所以请帮助我....下面的代码如下 我有两个课说class1和class2 ...... 在class1我打电话
class1.h
@interface class1 : UIViewController {
IBOutlet UILabel *statusText;
}
@property (nonatomic,retain)UILabel *statusText;
- (void)buttonpressed:(id)sender;
@end
class1.m
@implemenation class1
-(IBAction)sayhello:(id)sender
{
class1ViewController *class = [[class1ViewController alloc]init];
[class hello];
}
class2.h
@interface class2 : UIViewController {
UILabel *statusText;
}
@property(nonatomic,retain)UILabel *statusText;
-(void)sayhello:(id)sender;
@end
class2.m
@implementation class2
-(void)sayhello:(id)sender;
{
NSString *newtext = [[NSString alloc] initWithFormat:@"hello"];
statusText.text = newtext;
[newtext release];
}
请建议我应该在代码中做出哪些更改,以便当我按下按钮时,它应该通过调用另一个类中的方法显示消息“HELLO”....我已经使用了两个类...我使用了IBAction方法... 我想用另一个类调用一个方法。
提前多多感谢...
答案 0 :(得分:2)
而不是[class hello]
,请使用[class sayhello:nil]
。
一些注意事项:类的名称应以大写字母开头,例如: Class1 和 Class2 。另外,buttonpressed:
传递sender
,但您没有使用它。删除:(id)sender
时也可以。当您设置text
的{{1}}时,首先会创建一个新字符串。这样做:statusText
;
答案 1 :(得分:2)
嗨,你知道写这个吗
class1ViewController *class = [[class1ViewController alloc]init];
我认为应该是: -
-(IBAction)sayhello:(id)sender
{
class2 *class = [[class2 alloc]init];
NSString *string= [class sayhello];
[class release];
label.text=string;
}
别忘了在class1中导入class2
在class2中简单地写一下: -
-(NSString)sayhello
{
return @"hello";
}
答案 2 :(得分:1)
希望这有帮助
class2 * _class2Object = [[class2 alloc]init]; [_class2Object sayHello];
并且不要忘记在class1中导入class2,否则app可能会崩溃,因为你想在class1中调用class2的方法,所以在class1中导入class2.h头并添加上面的代码。
答案 3 :(得分:0)
理论上,因为你正在调用一个对象方法(我想你知道对象方法和类方法之间有什么区别),所以你应该分配并启动包含你想要调用的方法的类的对象(这里是class2)。
我建议您在class1的视图中显示class2生成的字符串:
所以在class1:
-(IBAction)sayHello
{
class2* c2 = [[class2 alloc] init];
statusText.text = [c2 sayhello];
[c2 release];
}
第2课:
-(NSString*)sayhello
{
return @"a string";
}