У меня есть два контроллера вида: BSViewController
, который содержит исходные ivars number
и array
и BSotherViewController
, которые в качестве цели должны получить ивары. (BSViewController
имеет кнопку на ней, которая составляет до BSotherViewController
.)получить ivar в другом классе
Как получить доступ к значению двух иваров в BSotherViewController
?
BSViewController.h
#import <UIKit/UIKit.h>
@interface BSViewController : UIViewController
@property (nonatomic) NSInteger number;
@property (nonatomic, weak) NSArray * array;
@end
BSViewController.m
#import "BSViewController.h"
@interface BSViewController()
@end
@implementation BSViewController
@synthesize number;
@synthesize array;
- (void)viewDidLoad
{
[super viewDidLoad];
BSViewController *view = [[BSViewController alloc] init];
NSArray* _array = [NSArray arrayWithObjects: @"manny",@"moe",nil];
view.array = _array;
view.number = 25;
}
@end
BSotherViewController.h
#import <UIKit/UIKit.h>
@class BSViewController;
@interface BSotherViewController : UIViewController
@end
BSotherViewController.m
Проблема в том, что ниже aview.number
- 0, а не 25; и aview.array
- null.
#import "BSotherViewController.h"
#include "BSViewController.h"
@interface BSotherViewController()
@end
@implementation BSotherViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
BSViewController *aview = [[BSViewController alloc] init];
NSLog(@"other view: %@", aview);
NSLog(@"other number: %d", aview.number); // produces 0, not desired 25
NSLog(@"other array: %@", aview.array); // produces null, not desired manny,moe
}
@end
Как я могу это исправить? Если я поставлю '@property (сильный, неатомный) BSViewController * view;' в .h, я получаю несовместимый тип свойства. – zerowords
Добавьте метод init в BSViewController и установите значения в этом методе – johan
Это мошенничество, не так ли, потому что 'init' выполняется до того, как известны значения числа и массива. Я попытался создать еще один массив массивов чисел: - (id) initWithNumber: (NSInteger): (NSArray *) { self = [super init]; if (self) { _number = number; _array = array; return self; } return nil; } 'и называть его после вычисления' number' и 'array', но я получаю 0 и нулевые результаты. Можете ли вы, пожалуйста, отреагировать на эти идеи? – zerowords