2015-06-15 3 views
-2

У меня есть UIView с UIButton создан в 1 классе: «viewClass». В моем классе mainVC я позвонил viewClas, и мне нужно было вызвать метод в mainVc, когда выбрано значение button, поэтому я создал . (Я надеюсь, что было ясно.)Назначение переменной из другого класса

Вот как я создал и delegate:

viewClass.h

@protocol ViewClassDelegate 

-(void)buttonWasClicked; 

@end 

... 
@property (nonatomic, strong) id<ViewClassDelegate> delegate; 

viewClass.m

[submitButton addTarget:self action:@selector(submitButtonTapped) forControlEvents: UIControlEventTouchUpInside]; 

- (void)submitButtonTapped { 
    [self.delegate buttonWasClicked]; 
} 

mainVC.m

// Imported and called the delegate in mainVC.h. Then in .m I set the delegate 

-(void)buttonWasClicked { 
    // Perform some action 
} 

Есть ли способ, чтобы передать NSString в buttonWasClicked? Я не имею в виду, как это:

- (void)buttonWasClicked:(NSString *)myString 

потому что myString не имеет никакого значения, если я не назначать его в mainVC методе. Я хочу назначить его в submitButtonTapped (который находится в myView.m).

В принципе, я хочу что-то вроде этого:

- (void)textFieldDidBeginEditing:(UITextField *)textField 

В этом методе, он знает, что textField без меня его определения, когда я использую этот метод.

Надеюсь, это ясно. Если кто-то может объяснить это лучше, не стесняйтесь его редактировать. Если вам нужно больше разъяснений, пожалуйста, задайте в комментариях.

+0

Откуда вы хотите передать «NSString» туда, где? –

+0

От 'myView' до' mainVC'? –

+0

Да. От 'myView' до' mainVC' с помощью метода 'buttonWasClicked' – Jessica

ответ

0

viewClass.h

@protocol ViewClassDelegate 

-(void)buttonWasClicked:(NSString *)aString; 

@end 

viewClass.m

[submitButton addTarget:self action:@selector(submitButtonTapped) forControlEvents: UIControlEventTouchUpInside]; 

- (void)submitButtonTapped { 
    [self.delegate buttonWasClicked:@"this is a string"]; 
} 

mainVC. m

// Imported and called the delegate in mainVC.h. Then in .m I set the delegate 

-(void)buttonWasClicked:(NSString *)aString { 
    // aString = this is a string 
} 
+0

Wow !! Не могу поверить, что это было так просто! Благодаря!! Есть ли это имя? – Jessica

+0

:) Не уверен, что для этого есть особые условия. Но это всего лишь делегирование. –

0

Я не уверен, если это то, что вы хотите:

@protocol ViewClassDelegate 

-(void)buttonWasClicked:(NSString*)value; 

@end 

... 
@property (nonatomic, weak) id<ViewClassDelegate> delegate; 

[submitButton addTarget:self action:@selector(submitButtonTapped:) forControlEvents: UIControlEventTouchUpInside]; 

- (void)submitButtonTapped:(UIButton*)sender { 
    [self.delegate buttonWasClicked:stringToSendWhereverHasBeenDefined]; 
} 

... 

-(void)buttonWasClicked:(NSString*)value { 
    // Perform some action 
} 
+0

Вместо кнопки я хочу передать уже определенную строку – Jessica

+0

Я отредактировал ответ. Пожалуйста, дайте мне знать, если мне не хватает деталей – agy

Смежные вопросы