Печать vc1 NSString из vc2 - PullRequest
       3

Печать vc1 NSString из vc2

0 голосов
/ 03 января 2012

Я хочу распечатать vc1.string1 из vc2.

В данный момент на консоли отображается:

vc1.string1 (null)

Когда яЯ не использовал раскадровку. Я обращался к переменной vc1 следующим образом:

AppDelegate *appDelegate = [(AppDelegate *)[UIApplication sharedApplication]delegate];
NSLog(@"vc1.string1 %@", appDelegate.viewController.string1);

Но я не знаю, как получить доступ к vc1.string при использовании раскадровки.

Помогите, пожалуйста, спасибо.

PS Вот ссылка моего проекта: http://dl.dropbox.com/u/12439052/AccessDiffClass.zip

//ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
    NSString *string1;
}

@property (nonatomic, strong) NSString *string1;

@end

#import "ViewController.h"

@implementation ViewController
@synthesize string1;

-(void)viewDidLoad {
    string1 = @"String One";
    NSLog(@"string1 %@", string1);
}

@end

VC2:

//ViewController2.h

#import <UIKit/UIKit.h>

@class ViewController;

@interface ViewController2 : UIViewController {
    ViewController *vc1;
}

@property (nonatomic, strong) ViewController *vc1;

@end

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

@implementation ViewController2
@synthesize vc1;

-(void)viewDidLoad {
    NSLog(@"vc1.string1 %@", vc1.string1);
}

@end

Ответы [ 2 ]

1 голос
/ 03 января 2012

Я скачал ваш проект и добавил этот бит кода в ваш файл ViewController.m:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog( @"preparing for segue" );
    ViewController2 * vc2 = [segue destinationViewController];
    vc2.vc1 = self;
}

И это выглядело так, как вы надеялись в моей консоли симулятора.

Теперь, это определенно не лучшее, что можно сделать здесь.В мире ARC, я не знаю, сохранен ли vc1 или мы просочились или что-то еще.Было бы намного умнее для вас, чтобы дать вашему классу ViewController2 свойство NSString *, которое устанавливается в методе prepareForSegue.А также задайте идентификатор для своей статьи.

Вот еще один вопрос StackOverflow , в котором речь идет о prepareForSegue немного более (и несколько более подробно).

0 голосов
/ 04 января 2012

сделал ошибку в прошлый раз, попробуйте это.

Код ключа: appDelegate = (AppDelegate *) [[UIApplication sharedApplication] делегат]; vc1 = appDelegate.viewController; NSLog (@ "string1% @", vc1.string1);

http://dl.dropbox.com/u/12439052/passingValue.zip

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...