Iphone 是否在UITableViewCell和UITableViewController之间传递数据?

Iphone 是否在UITableViewCell和UITableViewController之间传递数据?,iphone,ios,objective-c,xcode,cocoa-touch,Iphone,Ios,Objective C,Xcode,Cocoa Touch,我在xcode 4.6中创建了主细节模板项目,并添加了带有2个文本字段的自定义单元格。我还创建了一个新类,它是UITableViewCell的子类,在这个类中我为文本字段创建了outlets。当用户键入某些内容时,NSMUTABLEARRY会更新,并且工作正常。现在我想知道如何将此数组传递回MasterViewController(UITableViewController),以便使用此数据显示计算结果 我尝试在UIViewController之间为代理使用教程,但不断出现错误。非常感谢您的帮助

我在xcode 4.6中创建了主细节模板项目,并添加了带有2个文本字段的自定义单元格。我还创建了一个新类,它是UITableViewCell的子类,在这个类中我为文本字段创建了outlets。当用户键入某些内容时,NSMUTABLEARRY会更新,并且工作正常。现在我想知道如何将此数组传递回MasterViewController(UITableViewController),以便使用此数据显示计算结果


我尝试在UIViewController之间为代理使用教程,但不断出现错误。非常感谢您的帮助。

您需要创建协议:

我只是给出了如何创建协议的基本想法

#DetailViewController.h
#进口
@协议主代表
-(void)getButtonTile:(NSString*)btnTile;
@结束
@界面详细信息ViewController:MasterViewController
@属性(非原子,赋值)id customDelegate;
#DetailViewController.m
if([self.customDelegate respondsToSelector:@selector(GetButtonTile:)]))
{
[self.customDelegate GetButtonTile:button.currentTitle];
}
#MasterViewController.m
创建DetailViewController的对象
DetailViewController*obj=[[DetailViewController alloc]init];
obj.customDelegate=self;
[self.navigationController pushViewController:reportTypeVC动画:是];
并在MasterViewController.m中为获取按钮标题添加委托方法。
#布拉格标记-
#pragma标记-自定义委托方法
-(void)getButtonTile:(NSString*)btnTile;
{
NSLog(@“%@”,btnTitle);
}

您不应该将数据保存在
UITableViewCell
中,因为它会破坏MVC

您需要在单元格上获取
UITextField
的引用。以下是我在登录表单中的操作:

我有一个名为
TextFieldCell
的自定义单元格子类,它有一个名为
textField
的出口,我希望我的
UITableViewController
有对这些
UITextField
的引用

首先,我打开故事板,将cell类设置为TextFieldCell,然后将UITextField连接到cell textField插座。然后我将其添加到
表视图:cellforrowatinexpath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    (…)
    if (indexPath.row == 0) {
        // Sets the textField of the first cell as the loginTextField.
        self.loginTextField = tCell.textField;
    } else {
        // Sets the textField of the second cell as the passwordTextField.
        self.passwordTextField = tCell.textField;
    }
    tCell.textField.delegate = self;
    (…)
}

现在我可以访问我的
loginTextField
和我的
passwordTextField
的值。我在
tableView:cellForRowAtIndexPath:
上这样做,因为那时我正在创建要添加到表视图的单元格。

在单元格子类中添加一个字段,以包含指向控制器的指针或需要访问的任何其他数据锚。在您的情况下,您可能会回拨到主VC以传达更新。但是,当我收到错误消息说connection textField不能将prototype对象作为其目标时,我如何为单元格创建出口您不能直接将单元格连接到View Controller,因为单元格不是真实的对象,这是一个初始化对象的原型。你需要用你需要的插座创建一个自定义的
UITableViewCell
子类,并将
UITextField
连接到该单元格。我这样做了,我创建了一个新类,它是UITableViewCell的子类,工作正常。但是,我一直在研究如何将此数据传递给其他类,如UITableViewController?如果UITableViewController引用了UITableViewCell,那么我就在我的
表格视图:cellForRowAtIndexPath:
上执行此操作,在那里我会得到指向文本字段的变量,但是您可以简单地获得一个指向单元格的变量,然后访问该单元格内的数据结构。请注意,在视图中存储和专门处理数据通常是一件坏事。您通过按viewController执行协议,而在我的情况下,这行代码是无用的,因为我从非viewController的类发送数据:[self.navigationController pushViewController:enterAmountVC动画:YES];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    (…)
    if (indexPath.row == 0) {
        // Sets the textField of the first cell as the loginTextField.
        self.loginTextField = tCell.textField;
    } else {
        // Sets the textField of the second cell as the passwordTextField.
        self.passwordTextField = tCell.textField;
    }
    tCell.textField.delegate = self;
    (…)
}