проблема при отображении строки в текстовом поле - PullRequest
0 голосов
/ 21 апреля 2011
Hi to all,

Я передал переменную из first.m в seViewController.m. Я могу напечатать эту переменную, используя NSLog (@variable), но я не могу использовать textField.text = variable. Как напечатать эту переменную в текстовом поле?

First.m

-(void)buttonPressed01  
{     
          seViewController *seView = [[seViewController alloc] init];    
          [seView insert:myString];  
     [self.navigationController popViewControllerAnimated:YES];     
}    

seviewcontroller.m

-(void)insert:(NSString*) myString  
{        
    NSLog(@"%@",myString);

textField.text=[NSString stringWithFormat:@"%@",myString];     
}

Ответы [ 5 ]

2 голосов
/ 21 апреля 2011
seViewController *seView = [[[seViewController alloc] initWithNibName:@"seViewController" bundle:nil] autorelease];
[seView insert:String];
[[self navigationController] pushViewController:seView animated:YES];   

seviewcontroller.m

-(void)insert:(NSString*) myString
{
NSLog(@"%@",myString);

textField.text=myString;
}
0 голосов
/ 21 апреля 2011

Вы можете использовать это, если то, что я понял, правильно, Вы можете получить массив viewControllers из контроллера навигации. Вам не нужно инициализировать контроллер представления, и это не будет работать, как описано выше.

0 голосов
/ 21 апреля 2011

Я думаю, что это не работает, потому что вы передаете эту переменную в новый экземпляр вашего seViewController, в то время как вы вставляете его в следующую строку. Вы должны получить тот же экземпляр, что и -

seViewController *seView = (seViewController*)[self parentViewController];
[seView insert:myString];  
[self.navigationController popViewControllerAnimated:YES];
0 голосов
/ 21 апреля 2011

Когда вы извлекаете из стека, он загружает экземпляр контроллера представления, который вы вставили в стек.Здесь вы создали новый экземпляр, задали текстовое поле и загрузили экземпляр в стек.Вот почему текстовое поле не показывает значение для установки.Если вы хотите передать значение в класс, который вам нужен, чтобы передать значение с помощью какого-то одноэлементного класса или делегата приложения.

0 голосов
/ 21 апреля 2011

Пока ваш seViewController не загружен, вы не можете использовать его выходы, здесь вы используете textField.Он не будет устанавливать текст, потому что после seViewController *seView = [[seViewController alloc] init]; представление инициализируется, но вам все равно нужно загрузить его в память, чтобы использовать его выход.так что, если вы используете его представление, то после добавления Subview или представления modalView или, нажав его в стеке навигации, вызовите этот метод.

, иначе у вас должна быть строка в seviewcontroller, которую вы будете устанавливать, и когда контроллеры будут загружены в память viewDidLoad, просто делайте то, что вы делаете прямо сейчас в методе вставки, установите текст TextField.1006 * Кроме того, я не уверен, что вы хотите сделать с seView?почему вы создаете новый экземпляр, а не используете его?Может быть, вы создали этот контроллер ранее и хотите изменить текст textField этого контроллера, а не новый.Тогда в этом случае вы должны ссылаться на этот контроллер, а не на этот, потому что это совершенно другой объект.

Спасибо

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