위임과 관련된 문제가 있습니다 .2 tabView가 있습니다. 첫 번째 tabview에서 나는 2 텍스트 필드 및 대리자 메서드를 트리거하는 단추가 있고 두 번째 tabview에서 첫 번째 tabview.Whats 잘못된 텍스트 코드의 내용을 표시하는 데 2 레이블이 내 코드 ??? 제 tabviewA 들어iOS의 탭 막대보기간에 데이터를 전달하는 사용자 지정 위임
.H 파일
#import <UIKit/UIKit.h>
@class ViewControllerA;
@protocol ViewControllerADelegate <NSObject>
-(void)sayHello:(ViewControllerA*)viewController;
@end
@interface ViewControllerA : UIViewController<UITextFieldDelegate>
@property (nonatomic,strong)IBOutlet UITextField *textFieldFirst;
@property (nonatomic,strong)IBOutlet UITextField *textFieldSecond;
@property (nonatomic,strong)id<ViewControllerADelegate>delegate;
-(IBAction)next:(id)sender;
@end
및하는 .m 파일
#import "ViewControllerA.h"
@interface ViewControllerA()
@end
@implementation ViewControllerA
@synthesize textFieldFirst=_textFieldFirst;
@synthesize textFieldSecond=_textFieldSecond;
@synthesize delegate=_delegate;
- (void)viewDidLoad
{
[super viewDidLoad];
_textFieldFirst.delegate=self;
_textFieldSecond.delegate=self;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return NO;
}
-(IBAction)next:(id)sender
{
[self.delegate sayHello:self];
}
@end
둘째 tabbarViewB 대한 .H 파일
#import <UIKit/UIKit.h>
#import "ViewControllerA.h"
@interface ViewControllerB : UIViewController<ViewControllerADelegate>
@property (nonatomic,strong)IBOutlet UILabel *labelFirst;
@property (nonatomic,strong)IBOutlet UILabel *labelSecond;
@end
및하는 .m을 파일
#import "ViewControllerB.h"
@interface ViewControllerB()
@end
@implementation ViewControllerB
@synthesize labelFirst=_labelFirst;
@synthesize labelSecond=_labelSecond;
- (void)viewDidLoad
{
[super viewDidLoad];
ViewControllerA *viewControllerA=[self.tabBarController.viewControllers objectAtIndex:0];
viewControllerA.delegate=self;
// Do any additional setup after loading the view.
}
-(void)sayHello:(ViewControllerA *)viewController
{
_labelFirst.text=viewController.textFieldFirst.text;
_labelSecond.text=viewController.textFieldSecond.text;
}
@end
N.B : 동일한 프로세스로 탭뷰 A에 탭 B를 시도했지만 정상적으로 작동했습니다. 반대로 (즉, A에서 B까지) 전혀 작동하지 않습니다. 감사합니다
정확하게 직면 한 문제는 무엇이며 "sayHello"가 ViewControllerB에서 호출되고 텍스트 값이 nil이 아닌지 확인 했습니까? – d4Rk
어느 시점에서 '작동하지 않습니까?' 코드에 중단 점을 넣고 다음에 : IBACtion이 호출되는지 확인하고, 그렇다면 델리게이트가 올바르게 설정되었는지 여부를 확인하십시오. –
ViewControllerA가 가장 먼저 표시되어야하는 경우 ViewControllerB가 대리인으로 설정할 기회가 있습니까? –