Цель C переключается с одного взгляда на другой - PullRequest
1 голос
/ 09 ноября 2011

Я новичок в программировании на C, и мне нужно очень быстро создать приложение для iPhone. Я использую XCode 4.2

У меня проблема с переносом переменной NSString из одного представления в другое. два представления находятся в двух разных наборах классов .h и .m

в первом классе в .h у меня есть что-то вроде этого

@interface firstview : UIViewController {
NSString *test;
}

-(IBAction)testbutton
@end

в .m первого просмотра у меня

-(IBAction)testbutton{
secondView *second; 
[second setText:text]; //set text is a function that will take an NSString parameter
second= [[secondView alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:second animated:YES];
} 

в .h второго вида, который я написал

@interface secondView : UIViewController{
-IB
}

Ответы [ 3 ]

1 голос
/ 09 ноября 2011

У вас правильная идея, но вы пытаетесь вызвать -setText: до того, как second укажет на действительный объект! Сделайте это вместо:

-(IBAction)testbutton{
    secondView *second; 
    second = [[secondView alloc] initWithNibName:nil bundle:nil];
    [second setText:text]; //set text is a function that will take an NSString parameter
    [self presentModalViewController:second animated:YES];
}

Кроме того, интерфейс, который вы предоставляете для своего secondView класса, выглядит как неправильным и неполным - я не уверен, что вы пытаетесь сделать с частью -IB. И в будущем будет полезно, если вы будете следовать обычному соглашению об именах Objective C и начнете имена классов с заглавной буквы: SecondView вместо secondView. Наконец, я бы посоветовал не называть контроллер представления, заканчивающийся на «... View», поскольку это позволяет легко спутать контроллер представления с UIView. Все вместе, это должно выглядеть примерно так:

@interface SecondViewController : UIViewController{
    NSString *text;
}
@property (retain, nonatomic) NSString *text;
@end

Объявление text в качестве переменной экземпляра здесь необязательно - если вы этого не сделаете, компилятор создаст ivar, если вы синтезируете методы доступа для своего свойства text.

0 голосов
/ 09 ноября 2011

Вам необходимо установить текст после выделения и инициализации.

-(IBAction) testButton {
    secondView *second = [[[secondView alloc] initWithNibName:nil bundle:nil] autorelease];
    [second setText:text];
    [self presentModalViewController:second animated:YES];
}
0 голосов
/ 09 ноября 2011

Измените свой код следующим образом:

-(IBAction)testbutton{
    secondView *second; 
    second = [[secondView alloc] initWithNibName:nil bundle:nil];
    [second setText:text]; //set text is a function that will take an NSString parameter
    [self presentModalViewController:second animated:YES];
} 

В исходной версии вы инициализировали (то есть создавали) свой второй просмотр после вызова setText:.Вам нужно инициализировать его и , затем установить текст.

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