#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 из контроллера навигации. Вам не нужно инициализировать контроллер представления, и это не будет работать, как описано выше.