将数据从UIView Controller textField传递到单元格上的TableViewController标签 - 目标c

时间:2013-01-22 23:46:53

标签: ios objective-c

如何将textField数据从UIView Controller文本字段传递到单元格中的tableview标签?我想以某种方式将文本字段数据添加到数组,以便我可以设置行数返回值到数组计数。

我在我的模型中添加了一个NSMutable数组。

在我的视图控制器中,我正在实现prepareForSegue方法

  if ([segue.identifier isEqualToString:@"Details"]){

        MileageDetailViewController * mdv = [segue destinationViewController];

        NSString *text;
        startTextField.text = text;
        mdv.label.text = text;

我尝试了几种不同的方法。我用数组做了这个,并尝试添加一个数组的文本对象,但也没有显示。最后一种方法我尝试使用标签并将textField中的文本添加到tableview标签中。

 In the tableView I add this code to grab the text from the viewController.

     - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    { 
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return  1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath      *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Reuse"];

    UILabel *labe = (UILabel *) [cell viewWithTag:20];

    labe.text = label.text;

    // Configure the cell...

    return cell;

2 个答案:

答案 0 :(得分:1)

您需要熟悉MVC设计模式。创建一个包含数组的模型类。修改文本字段后,更新阵列。如果表视图的视图控制器正在观察相同的模型对象(可能使用KVO),那么它可以在数组更改时自动更新。

答案 1 :(得分:0)

下面的代码示例只是为了帮助您入门。但我强烈建议您按照Ray Wenderlich网站(link)上的教程进行操作,因为您似乎只是开始iOS开发。

使用prepareForSegue:在视图控制器之间传递数据(在代码块中包含注释):

// This will get called before the view appears
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([[segue identifier] isEqualToString:@"Details"]) {
        // Get destination view controller
        MileageDetailViewController *vc = [segue destinationViewController];

        // Grab the text field contents and put it into a public property on the new view controller
        vc.myText = self.myTextField.text;
        // NOTE: myText is a public NSString property on your MileageDetailViewController
        // NOTE: self.myTextField is the IBOutlet connected to your Text Field
    }
}

现在使用表视图访问控制器中的方法:

// Load the model required for the view controller
- (void)viewDidLoad {
    [super viewDidLoad];

    // Load your "model" - in this case an array property (called myData) with a single piece of text
    // NOTE: myText CANNOT be nil or an exception will occur
    self.myData = [[NSArray alloc] initWithObjects: self.myText, nil];
}


// UITableViewDataSource
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{ 
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return  [self.myData count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath      *)indexPath
{
    // NOTE: You must have set the reuse identifier in Interface Builder for this to work
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Reuse"];

    // NOTE: You must have set the tag in Interface Builder for this to work
    UILabel *labe = (UILabel *)[cell viewWithTag:20];

    labe.text = [self.myData objectAtIndex:indexPath.row];

    return cell;
}

希望这会有所帮助; iOS开发很有趣,但是通过一些教程可以帮助您快速上手。