Отправить данные в UIView из UIViewController?



Очень большая путаница, которую я никак не мог разрешить...



Я мог бы запутаться в некоторых основных вещах.. но я просто не могу сделать это прямо



Здесь есть две вещи




  1. UIViewController

  2. UIView объект внутри UIViewController




Вот что я сделал:



1) создаем проект единого вида - > из раскадровки я вытащил UIView на UIViewController



2) новый - > файл для создания myUIViewClass.h и myUIViewClass.m, который является подклассом UIView.



3) назначьте "пользовательский класс" UIView, который я вытащил, myUIViewClass



4) вернуться в для UIViewController, контроль+перетащите, что ему UIView в моем myUIViewController.h и сделать его выходом, как это:



MyUIViewController.h



#import <UIKit/UIKit.h>
#import "myUIViewClass.h"

@interface myUIViewController : UIViewController
@property (strong, nonatomic) IBOutlet myUIViewClass *uiview;
@end


4) Создайте свойство внутри myUIViewClass.h, который будет делать некоторые чертежи для UIView напрямую:

MyUIViewClass.h



#import <Foundation/Foundation.h>

@interface myUIViewClass : NSObject

//I want to use this array in - (void)drawRect:(CGRect)rect {} method.
@property (nonatomic, strong) NSArray *arrayInsideUIView;

@end


4) внутри myUIViewClass.m, поскольку это подкласс UIView, есть такая строка кода, которая вызывается при запуске проекта:



MyUIViewClass.m



- (void)drawRect:(CGRect)rect {
NSLog(@"drawing starts");
}


5) Теперь я хочу, чтобы это было что-то вроде:

- (void)drawRect:(CGRect)rect {
NSLog(@"data to draw with: %@", _arrayInsideUIView);
}


6) но прежде чем сделать это, мне нужно будет заполнить _arrayInsideUIView. Я хочу сделать это из myUIViewController.m



7) Как мне это сделать?



Не правильно 1:



MyUIViewController.m



- (void)viewDidLoad {
_uiview = [UIView alloc] init];
_uiview.arrayInsideUIView = @[@"one", @"two"];
//the array is not inside UIView, but inside myUIViewClass
}


Не правильно 2:



MyUIViewController.m



- (void)viewDidLoad {
_uiview = [[myUIViewClass alloc] init];
[self.view addSubview: _uiview];
//this creates duplicate UIView's
}


Не правильно 3:



MyUIViewController.m



- (void)viewDidLoad {
myUIViewClass *uiviewclass = [[myUIViewClass alloc] init];
uiviewclass.arrayInsideUIView = @[@"one", @"two"];
//No UIView gets created here
}


Так запутался!

543   1  

1 ответ:

Все, что вам нужно сделать, это следующее:

- (void)viewDidLoad {
    [super viewDidLoad]; //dont forget this
    self.uiview.arrayInsideUIView = @[@"one", @"two"];
}

Поскольку представление подключено к раскадровке, раскадровка обрабатывает создание представления, поэтому нет необходимости выделять/инициализировать его самостоятельно.

И если вы делаете alloc init его самостоятельно (что вы в настоящее время делаете), вы заменяете один раскадровка установки, так что придется полностью настроить его с нуля самостоятельно (положение кадра и т.д.), что, вероятно, не то, что вы хотите.

Comments

    Ничего не найдено.