как вызвать метод из другого метода класса, который состоит из метода IBAction - PullRequest
3 голосов
/ 01 июня 2011

На самом деле я тестирую пример приложения на iPhone ... где в пользовательском интерфейсе, если я нажимаю кнопку, сообщение "привет" должно отображаться в текстовом поле ... таким образом, чтобы при нажатии кнопки оно вызывало метод, присутствующий вдругой класс, т. е. из класса 2 и отображающий сообщение в пользовательском интерфейсе, поэтому, пожалуйста, помогите мне .... следующий код приведен ниже, у меня есть два класса, скажем, class1 и class2 ... в классе 1 я звоню

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 ... Я хочу вызвать метод, используя другой класс.

Заранее большое спасибо ...

Ответы [ 4 ]

2 голосов
/ 01 июня 2011

Привет, вы знаете, что пишете это

class1ViewController *class = [[class1ViewController alloc]init];

Я думаю, это должно быть: -

-(IBAction)sayhello:(id)sender

{
class2 *class = [[class2 alloc]init];
   NSString *string= [class sayhello];
    [class release];
label.text=string;
}

Не забудьте импортировать class2 в class1

в class2просто напишите: -

-(NSString)sayhello
{
    return @"hello";

 }  
2 голосов
/ 01 июня 2011

Вместо [class hello] используйте [class sayhello:nil].

Несколько замечаний: названия классов должны начинаться с заглавной буквы, например, Class1 и Class2 .Кроме того, buttonpressed: передает sender, однако вы его не используете.Это также работает при удалении :(id)sender.И когда вы устанавливаете text из statusText, вы сначала создаете новую строку.Это делает то же самое: statusText.text = @"hello";

1 голос
/ 01 июня 2011

Надеюсь, это поможет

class2 * _class2Object = [[class2 alloc]init];
[_class2Object sayHello];

и не забудьте импортировать class2 в class1, иначе приложение может завершиться сбоем, так как вы хотите вызвать метод class2 в class1, поэтому импортируйте заголовок class2.h в class1 и добавьте приведенный выше код.

0 голосов
/ 01 июня 2011

теоретически, поскольку вы вызываете метод объекта (я полагаю, вы знаете, в чем разница между методом объекта и методом класса), поэтому вам следует выделить и инициировать объект класса, который содержит метод, который вы хотите вызвать (здесь class2).

Я предлагаю вам показать некоторую строку, созданную class2, в представлении class1:

так в классе 1:

-(IBAction)sayHello
{
class2* c2 = [[class2 alloc] init];
statusText.text = [c2 sayhello];
[c2 release];
}

в классе 2:

-(NSString*)sayhello
{
return @"a string";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...