我有一个UITabBarController
,其中有3 UIViewControllers
。每个控制器都有一些UITextFields
。在UItabBarController
中是一个按钮" save"。请问,如何从UITextFields
UIViewControllores
获取数据?我需要来自UITextFields
的所有UIViewControllers
以及UITabBarController
中的所有#import <UIKit/UIKit.h>
#import "CoreDataHelper.h"
@interface StudentVC : UIViewController <UITextFieldDelegate>
@property (strong, nonatomic) NSManagedObjectID *selectedStudentID;
@property (strong, nonatomic) IBOutlet UIScrollView *scrollView;
@property (strong, nonatomic) IBOutlet UITextField *studentNameTextField;
@end
的数据(在IBAction of save按钮中)。我该怎么做?感谢。
这是故事板上我的TabBarController的图片。
第一个ViewController有一个StudentVC类。该类有一个文本字段。在 StudentVC.m 中是此代码:
- (void)viewDidLoad
{
if (debug == 1) {
NSLog(@"Running %@ '%@'", self.class, NSStringFromSelector(_cmd));
}
[super viewDidLoad];
StudentVC *studentVC = [self.tabBarController.viewControllers objectAtIndex:0];
studentVC.studentNameTextField.text = @"asad";
}
studentNameTextField与Storyboard中的字段相关联。然后我有一个TabBar类,类名是StudentTBC。在文件 StudentTBC.m 中,我有以下代码:
- (IBAction)save:(id)sender {
if (debug == 1) {
NSLog(@"Running %@ '%@'", self.class, NSStringFromSelector(_cmd));
}
StudentVC *studentVC = [self.tabBarController.viewControllers objectAtIndex:0];
NSString *string = studentVC.studentNameTextField.text;
NSLog(@"string:%@", string);
所以,当我继续使用TabBar时,我会在studentNameTextField中看到文本&#34; asad&#34;,但字段很清楚...所以我也在IBAction中添加:保存此代码:
NSInteger countOfViews = [self.tabBarController.viewControllers count];
NSLog(@"count:%ld", (long)countOfViews);
但是当我插入字段并按&#34; ulozit&#34; (它保存在捷克语中),我得到一个&#34;字符串:null&#34;而不是&#34;字符串:textWhichIWriteToField&#34;。我尝试了索引0,1,2但没有任何作用。 :/
编辑3.4 15:20
我移动了我的申请。第一部分是我的故事板 - UITabBarController和3UIViewControllers。我删除了一个Navagition控制器。在第二部分,我再次做了奥特莱斯。第三部分是保存功能代码(代码可以写文本字段的内容)和TabBarController的ViewDidLoad代码(代码可以设置一个文本字符串)。最后一部分是运行应用程序(结果在console - null string和clear textfield中)。 我也试过打印这个:
{{1}}
一定是三个?要么?因为我的结果是0 ..为什么? :/
我的电影:https://www.youtube.com/watch?v=j6p__e48lLI&feature=youtu.be
EDITED 2.4 20:58 -------------------
您好。我尝试了所有选项,但没有任何工作..所以我做了一个新的SIMPLE应用程序,其中只有一个UITabBarController有两个UIViewControllers和一个UITableViewController(因为导航栏)。请下载项目并亲自试用。只运行,然后点击按钮&#34; TabBar&#34;你在UITabBarController上。当您按下“保存”按钮时,它应显示UIViewsControllers的计数和textfields的值。你可以试着告诉我出了什么问题吗?谢谢。这是项目:
答案 0 :(得分:2)
要访问其中一个文本字段,您可以使用以下代码:
- (IBAction)save {
YourUIViewController *vc = [self.tabBarController.viewControllers objectAtIndex:indexOfController];
NSString *str = vc.yourTextField.text;
}
EDIT。你告诉我你的控制器是如何连接的,现在我意识到你在UINavigaitonController
之后得到了UIViewController
。修改后的代码应如下所示:
- (IBAction)save {
NSArray *navConArr = [self.tabBarController.viewControllers objectAtIndex:indexOfController];
for(UINavigationController *nc in nacConArr) {
UIViewController *vc = [nc.viewControllers objectAtIndex:0];
NSLog(@"And your text is = %@", vc.studentNameTextField.text);
}
}
<强>更新强>
我最终解决了问题... TabBarController的正确代码
- (IBAction)save {
YourUIViewController *vc = [self.viewControllers objectAtIndex:indexOfController];
NSString *str = vc.yourTextField.text;
}
答案 1 :(得分:0)
请检查商店 UITextFields ,
同时检查输出
NSLog(@&#34; StudentVC textField - %@&#34;,studentVC.studentNameTextField); in save()
如果它也是null,那么你的网点肯定存在问题。