그래, 이전에 물어 봤지만 나는이 작업을하기 위해 여러 가지 방법을 시도했지만 어떤 이유로는 그렇지 않을 것입니다. 레이블의 텍스트 속성에 문자열을 저장하려고합니다. 이 레이블은 컨테이너보기 내의 tableVC
이라는 하위보기 컨트롤러에 있으며 UIDatePicker의 값인 datePicker
이 변경되면 IBAction에서 ViewController
이라는 parentViewController에서 레이블을 설정합니다.자식보기 컨트롤러 속성 설정
tableVC *tVC = [[tableVC alloc] init];
tVC.timeLabel.text = [formatter stringFromDate:self.datePicker.date];
를 또한 다음 일을 속성 @property (strong, nonatomic) tableVC *tVC;
을 시도했다 : 나는 시도
_tVC = [tableVC alloc] init];
_tVC.timeLabel.text = [formatter stringFromDate:self.datePicker.date];
하지만 그 중 하나가 작동하지 않습니다. 안녕, 난 #import "tableVC"
있습니다. 복잡한 노 띾색이나 프로토콜 방식으로 멍청한 실수를하고 있다고 생각하지 않습니다. 또한 NSLog(@"%@", [formatter stringFromDate:self.datePicker.date]);
을 사용하여 [formatter stringFromDate:self.datePicker.date]
이 datePicker에서 적절한 형식 (nil 이외의 형식)의 값을 반환한다는 것을 확인했습니다.
편집 여기
는 전체 파일과 함께 좀 더 정보입니다. 이 테이블은 Storyboard에 정의 된 정적 테이블입니다. 나는 이것이 문제의 원인이 될 수 있다고 생각했지만 심지어 tableVC
을 서브 클래스 UIViewController
에 대해 하나의 레이블로 대체했을 때 작동하지 않았습니다. 문제는 자식보기 컨트롤러 속성을 설정하는 방법에 있다고 생각합니다. 그러나 다른 프로젝트에서 prepareForSeque
메서드를 사용할 때이 문제가 발생하지 않습니다. 대상 컨트롤러의 속성 값을 설정할 수 있지만 대상 컨트롤러가 아닌보기 컨트롤러의 속성 값은 문제가되지 않습니다. 나는이 두 가지 문제가 동시에 일어난다 고 생각한다. 모든 연결은 스토리 보드를 통해 적절하게 이루어졌습니다.
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
ViewController.m
#import "ViewController.h"
#import "tableVC.h"
@interface ViewController()
@property (weak, nonatomic) IBOutlet UIView *containerView;
@property (weak, nonatomic) IBOutlet UILabel *testLabel;
@property (weak, nonatomic) IBOutlet UIDatePicker *datePicker;
- (IBAction)changedDatePickerSelection:(id)sender;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
tableVC *tVC = [[tableVC alloc] init];
[self addChildViewController:tVC];
[tVC didMoveToParentViewController:self];
NSLog(@"parent");
}
- (IBAction)changedDatePickerSelection:(id)sender
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.timeZone = [NSTimeZone defaultTimeZone];
formatter.timeStyle = NSDateFormatterShortStyle;
formatter.dateStyle = NSDateFormatterMediumStyle;
tableVC *tVC = (tableVC *)self.childViewControllers.lastObject;
tVC.timeLabel.text = [formatter stringFromDate:self.datePicker.date];
_testLabel.text = [formatter stringFromDate:self.datePicker.date];
NSLog(@"%@", [formatter stringFromDate:_datePicker.date]);
NSLog(@"%@", tVC.timeLabel.text);
}
@end
tableVC.h
#import <UIKit/UIKit.h>
@interface tableVC : UITableViewController
@property (weak, nonatomic) IBOutlet UILabel *timeLabel;
@end
tableVC.m
#import "tableVC.h"
#import "ViewController.h"
@interface tableVC()
@property (weak, nonatomic) IBOutlet UITextField *titleTextField;
@property (weak, nonatomic) IBOutlet UISwitch *onOffSwitch;
@property (weak, nonatomic) IBOutlet UIButton *saveButton;
- (IBAction)saveAlarm;
@end
@implementation tableVC
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.timeZone = [NSTimeZone defaultTimeZone];
formatter.timeStyle = NSDateFormatterShortStyle;
_timeLabel.text = [formatter stringFromDate:[NSDate date]];
NSLog(@"%@", _timeLabel.text);
}
- (BOOL)textFieldShouldReturn:(UITextField*)aTextField
{
[aTextField resignFirstResponder];
return YES;
}
- (IBAction)saveAlarm
{
// do something
}
@end
,
또한 datePicker
의 선택이 변경되었을 때 ViewController
의 testLabel
이 어떻게 업데이트되는지 보여주는 두 개의 이미지가 있지만 tableVC
의 timeLabel
은 어떻게 변경되지 않았는지를 보여줍니다. 첫 번째 이미지는 선택 변경 전이고 두 번째 이미지는 후입니다. 설명을 위해 timeLabel
은 세 번째 셀의 오른쪽에있는 레이블이고 testLabel
은 datePicker
바로 위에있는 레이블입니다. 어떤 도움
http://cl.ly/image/2Q301v0d2m00
http://cl.ly/image/0223183E1t2m
감사합니다.
'timeLabel' 속성은 어떻게 생겼습니까? – mkral
@mkral'@property (weak, nonatomic) IBOutlet UILabel * timeLabel; ' –
프로그래밍 방식으로 또는 interfaceBuilder를 사용하여'tableVC'를 추가 하시겠습니까? 인터페이스 빌더를 사용하는 경우 모든 매장을 연결하고 있습니까? – mkral