如何将文本字段数据添加到单元格

时间:2012-02-20 17:46:33

标签: objective-c ios uitextfield

我有一个数组,我现在用它来填充带有文本的2个单元格。在不同的视图中,我有一个textfield,textview等。 如何将用户在文本字段中输入的数据移动到不同控制器中的数组中。

这就是我所拥有的:

- (void)viewDidLoad
{
  tabledata = [[NSArray alloc] initWithObjects:@"Franklin", @"delossantos", nil];
  [super viewDidLoad];
}

以下是文本字段的视图控制器:

NewEntryController.m

#import "NewEntryViewController.h"

@implementation NewEntryViewController
@synthesize titleTextfield;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
  self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
  if (self) {
    // Custom initialization
  }
  return self;
}

#pragma mark - View lifecycle

- (void)viewDidUnload
{
  [self setTitleTextfield:nil];
  [super viewDidUnload];
  // Release any retained subviews of the main view.
  // e.g. self.myOutlet = nil;
}

@end

1 个答案:

答案 0 :(得分:1)

我猜有两种选择:

  1. 将您的数据分隔到另一个NSObject类中,并使其成为两个视图控制器的共享数据模型。当用户输入内容时写入。
  2. (真的很糟糕的选择)保持原样,确保第一个控制器中的阵列是公共可访问的,只需从另一个控制器获取数据。
  3. 此外,您声明了一个不可变数组,您将无法更改它。您将不得不重新创建或声明它是可变的。

    关于第一个选项的更多信息

    要创建共享模型,您必须创建一个单独的类。 添加一些属性来存储数据,例如

    @property (strong, nonatomic) NSMutableArray *userStrings;

    添加@synthesize并在新课程的init方法中对其进行初始化。

    创建它的实例并将其分配给两个视图控制器中的某个属性,例如:

    @property (strong, nonatomic) NSObject *dataModel;

    分配后,您将能够从视图控制器中访问它。在那里,当您的用户输入内容时,您需要通过添加,更改或删除模型数组中的元素来更新dataModel的内容。它将以类似的方式完成:

    [self.dataModel setUserStrings:[NSMutableArray arrayWithObjects: [self.textField text], [self.textView text], nil]];
    // or
    [[self.dataModel userStrings] addObject:[self.textField text]];
    

    这样您就可以拥有共享数据源。

    可能更容易的解决方案

    可能是您不需要在两个控制器之间同时共享模型,也许您只有在用户完成输入并且从第一个控制器创建后才打开第二个模型。

    在这种情况下,您不必创建和共享模型,您可以根据用户输入创建一个数组,并将其传递给您的第二个控制器。您将创建第二个控制器并设置其属性tableData。当您的下一个控制器出现时,它只是从该属性中读取并显示数据。


    如果您需要有关此类方法的更多信息,我建议您观看一些关于在Objective-C中使用MVC方法的视频教程。例如,斯坦福大学的iOS编程课程非常棒。它可以在iTunes U中免费获得。