Objective-c - контрольная розетка из другого класса

objective-c

78 просмотра

1 ответ

Мне просто нравится играть с кодированием для хобби, так что, вероятно, вопрос нуба;

У меня есть простая раскадровка для MacOS с 2 представлениями. У обоих есть свои классы (основной класс и подкласс). Как я могу контролировать розетку в подклассе из основного класса?

например

У меня есть кнопка (IBAction) в основном классе и текстовое поле (IBOutlet) в подклассе. Я хочу установить строковое значение для текстового поля нажатием на кнопку в основном.

В последние дни я много искал, но просто не понял. (или просто нужно нажать в правильном направлении)

РЕДАКТИРОВАТЬ после ответа JingJingTao:

Я использовал функцию перетаскивания, чтобы открыть второе окно. Я пробовал код, который дает JingJingTao, но текстовое поле не отвечает на действие. Мои уроки теперь выглядят так:

ViewController.h

#import <Cocoa/Cocoa.h>

@interface ViewController : NSViewController

- (IBAction)newText:(id)sender;

@end

ViewController.m

#import "ViewController.h"
#import "ViewController2.h"


@interface ViewController ()

@property (nonatomic) ViewController2 *subclass;

@end

@implementation ViewController


- (void)viewDidLoad {
    [super viewDidLoad];
}

- (void)setRepresentedObject:(id)representedObject {
    [super setRepresentedObject:representedObject];
}

- (void)newText:(id)sender {
    self.subclass.textField.stringValue = @"button pressed";
}


@end

ViewController2.h

#import "ViewController.h"

@interface ViewController2 : ViewController

@property (nonatomic) IBOutlet NSTextField *textField;

@end

ViewController2.m

#import "ViewController2.h"

@interface ViewController2 ()

@end

@implementation ViewController2

- (void)viewDidLoad {
    [super viewDidLoad];


}

@end
Автор: Martijn C Источник Размещён: 08.11.2019 11:17

Ответы (1)


0 плюса

Обновить:

Я приложил два скриншота того, как это выглядит в раскадровке для первого предложения,

1) Добавьте представление в ваш ViewController, установите класс в верхнем правом углу на «YourView», «YourView» - это просто NSView, добавьте к нему текстовое поле и подключите его. myview1

2) Добавьте YourView в качестве свойства к вашему ViewController, т.е. @property (nonatomic) IBOutlet NSView *yourView;и подключите его. myview2

Дайте мне знать, если есть какие-либо проблемы.

Вам просто нужно поместить текстовое поле в открытый интерфейс вашего подкласса, чтобы вы могли получить к нему доступ в своем основном классе, хотя звучит так, будто вы используете наследование, и я не думаю, что вам нужно, но это другая тема: D ,

Пример:

В MainClassViewController.m

@interface MainClassViewController ()

@propert (nonatomic) Subclass *subclass;

@end

@implementation MainClassViewController

// I guess you already add your subclass to the main viewcontroller because they display on the same screen.

- (void)yourButtonTapMethod {
     self.subclass.textfield.text = @"Your value";
}

В Subclass.h

@interface Subclass : NSObject

@property (nonatomic) IBOutlet UITextfield *textfield;

Я использую Cocoa Touch вместо Cocoa, так что, возможно, это NSTextfield для вас. Пожалуйста, дайте мне знать, если это не отвечает на ваш вопрос, удачи.

Автор: JingJingTao Размещён: 20.08.2016 03:43
Вопросы из категории :
32x32