는 좀 아이폰 프로그래밍에 내 손을 시도하고하지 않습니다와 나는 베테랑 상당히 분명있을 수 있습니다 뭔가에 걸쳐 실행했습니다하지만 난 그게 무슨 일이 일어나고 이유는 정확히 모르겠어요. 두 개의 UIViewController 클래스가 있고 다른 클래스의 메서드에 액세스하려고합니다. 두 NSObject 클래스 IB (둘 다 각각에 대한 UpdateClass 같은 클래스 파일) 함께 IB와 관련된 및 클래스를 만들고 메서드를 호출하려면 노력하고있어. 꽤 쉽지만, 문제는 NSLog에 따라 메서드를 호출하지만 레이블을 업데이트하지 않는다는 것입니다. 여기 내 코드는 다음과 같습니다.아이폰 - 사용자 정의 클래스 액세스 방법
//UpdateClass.h
#import <Foundation/Foundation.h>
@interface UpdateClass : NSObject {
IBOutlet UILabel *lbl1;
IBOutlet UILabel *lbl2;
}
@property (nonatomic, retain) IBOutlet UILabel *lbl1;
@property (nonatomic, retain) IBOutlet UILabel *lbl2;
- (void)updateLabels;
@end
//UpdateClass.m
#import "UpdateClass.h"
@implementation UpdateClass
@synthesize lbl1;
@synthesize lbl2;
- (void)updateLabels {
NSString *someWord = @"Whatever"; // This could be anything
NSLog(@"NSObject Update");
[lbl1 setText:someWord];
[lbl2 setText:someWord];
}
@end
//ViewController1.h
#import <UIKit/UIKit.h>
@class UpdateClass;
@interface ViewController1 : UIViewController {
IBOutlet UIButton *button1;
NSObject *UpdateClassObject;
UpdateClass *updateClass;
}
@property (nonatomic, retain) IBOutlet UIButton *button1;
@property (nonatomic, retain) NSObject *UpdateClassObject;
@property (nonatomic, retain) UpdateClass *updateClass;
- (void)updateLabels:(id)sender;
@end
//ViewController1.m
#import "ViewController1.h"
#import "UpdateClass.h"
@implementation ViewController1
@synthesize button1;
@synthesize UpdateClassObject;
@synthesize updateClass;
- (void)viewDidLoad {
[super viewDidLoad];
updateClass = [[UpdateClass alloc] init];
}
- (void)updateLabels:(id)sender; { //This is connected to TouchDown on button1
NSLog(@"Calls UpdateLabels");
[updateClass updateLabels]; //Calls the class method
}
//ViewController2.h
#import <UIKit/UIKit.h>
@class UpdateClass;
@interface ViewController2 : UIViewController {
IBOutlet UIButton *button2;
NSObject *UpdateClassObject;
UpdateClass *updateClass;
}
@property (nonatomic, retain) IBOutlet UIButton *button2;
- (void)updateLabels:(id)sender;
@end
//ViewController2.m
#import "ViewController2.h"
#import "UpdateClass.h"
@implementation ViewController2
@synthesize button2;
@synthesize UpdateClassObject;
@synthesize updateClass;
- (void)viewDidLoad {
[super viewDidLoad];
updateClass = [[UpdateClass alloc] init];
}
- (void)updateLabels:(id)sender; { //This is connected to TouchDown on button2
NSLog(@"Calls UpdateLabels");
[updateClass updateLabels]; //Calls the class method
}
따라서 두보기 모두에서 IB에 연결된 NSObject가 있습니다. 각 뷰에는 NSObject와 파일 소유자에게 연결되는 레이블이 있습니다 (둘 다 연결할 수는 없습니다). 버튼을 누르면 (IB에서 제대로 연결되어 있음) 레이블이 일부 문자열로 변경됩니다. NSLog는 메소드가 호출되었다고보고하지만 레이블은 변경되지 않습니다. 여기 뭐가 잘못 됐니?
(참고 :이 코드 중 일부를 입력해야하므로 약간의 실수가있을 수 있습니다. 지금은 나와 함께 모든 코드가 없기 때문입니다.)
메신저 그냥 레이블을 유지하고 업데이트하는 클래스를 사용하는 이유를 궁금해? 또한 UIViewControllers 뷰에 해당 클래스의 레이블을 추가 할 것인지 궁금합니다. – Daniel
업데이트 처리를위한 일종의 집중식 클래스를 생각했기 때문에 ...하지만 Objective-C 프로그래밍이 어떻게되어 있는지 이해하지 못하고 있습니다. 작업. –
정말 그럴 필요가 없습니다. UIViewCOntroller에서 레이블을 직접 처리 할 수 있습니다. 뷰를 관리하기 위해 컨트롤러가있는 것은 무엇입니까? – Daniel