在不同的View Controller上的UITextField和UITableView之间发送数据

时间:2012-01-18 01:51:20

标签: objective-c uiviewcontroller uitextfield uitableview

我已经搜索了相当多的内容,但我没有想出任何东西,我能想到的唯一可能有用的东西就是NSMutableDictionary。 无论如何,例如,在一个视图控制器上让我们调用它InputViewController。 所以在InputViewController上你有两个UITextFields,让我们说“用户名”和“密码”。 当用户点击InputView上的保存时,它链接到“TableView”表视图在一个地方显示用户名和密码。说一个名为“我的用户名和密码”的子类别。 当他们点击它时,它会显示他们在“用户名”和“密码”中输入的用户名和密码 非常感谢。什么都有帮助!

2 个答案:

答案 0 :(得分:3)

你错过了MVC的“M”部分。你有你的观点和控制器,但你正在尝试制作一个没有任何模型对象的应用程序,这就是你在苦苦挣扎的原因。

创建一个名为User的NSObject子类。给它名为“username”和“password”的字符串属性。通过添加以下方法使其成为单例:

+ (User *)sharedUser
{
    static User *sharedUser = nil;
    if (sharedUser == nil)
    {
        sharedUser = [[User alloc] init];
    }
    return sharedUser;
}

现在,您可以通过导入User.h并说

从程序中的任何位置访问它
User *user = [User sharedUser];

因此,您可以通过说

在第一个视图控制器中设置用户名/密码
User *user = [User sharedUser];
user.username = theUsername;
user.password = thePassword;

通过说

在第二个视图控制器中检索它们
User *user = [User sharedUser];
NSString *username = user.username;

等...

答案 1 :(得分:1)

当用户在您的InputViewController上点击“保存”时,从UITextFields获取值并将它们存储在NSDictionary中:

NSDictionary* userCreds = [NSDictionary dictionaryWithObjectsAndKeys: username, @"username", password, @"password", nil];

然后通过像setUserCredentials: (NSDictionary*) userCreds这样的方法将NSDictionary传递给你的TableViewController(你做的扩展UITableViewController的类)。然后您可以在那里存储字典,并在填充表视图的数据时检索值。 (如果您需要有关如何从字典中获取数据以及在TableView中显示的信息,请告诉我。我不知道您希望TableView看起来如何,因此您必须在那里提供更多信息。)< / p>