проблема с отображением строки в текстовом поле

#iphone #objective-c #xcode

#iPhone #objective-c #xcode

Вопрос:

 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];     
}
  

Ответ №1:

 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;
}
  

Комментарии:

1. @ranisha: я хочу открыть этот viewcontroller. как я могу это сделать?

2. @aravindanarvi, куда вы хотите вставить, напишите:-[[self NavigationController] popViewControllerAnimated: ДА];

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

4. текстовое поле моего представления находится в seViewController.m…. если я нажимаю view, это означает, что текстовое поле в seViewcontroller обновляется.. но если я всплываю, это означает, что он не обновляется… у меня всего 2 просмотра…

Ответ №2:

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

или же у вас должна быть строка в seviewcontroller, которую вы будете устанавливать, и когда контроллер будет загружен в память viewDidLoad просто сделайте то, что вы делаете прямо сейчас в методе insert, установите текст TextField.

Кроме того, я не уверен, что вы хотите сделать с seView? почему вы создаете новый экземпляр, а не используете его? Возможно, вы создали этот контроллер ранее и хотите изменить текстовое поле этого контроллера, а не новое. Тогда в этом случае вы должны ссылаться на этот контроллер, а не на этот, потому что это совершенно другой объект.

Спасибо

Ответ №3:

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

Ответ №4:

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

 seViewController *seView = (seViewController*)[self parentViewController];
[seView insert:myString];  
[self.navigationController popViewControllerAnimated:YES];
  

Ответ №5:

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