3

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

我尝试为 UIViewControllers 之间的委托使用教程,但我不断收到错误。任何帮助表示赞赏。

4

2 回答 2

2

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

您需要在您的单元格上获得参考UITextField。这就是我在登录表单中的做法:

我有一个名为 的自定义单元子类TextFieldCell,它有一个名为 的插座textField,我希望我UITableViewController有对这些UITextFields 的引用。

首先,我打开我的故事板,将单元格类设置为 TextFieldCell,然后将 UITextField 连接到单元格 textField 出口。比我把它加到tableView:cellForRowAtIndexPath:

- (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;
    (…)
}

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

于 2013-04-01T20:42:18.770 回答
0

在您的情况下,您需要创建协议:

我只是给出了如何创建协议的基本思路

另请阅读此问题

#DetailViewController.h

#import <UIKit/UIKit.h>

@protocol MasterDelegate <NSObject>
-(void) getButtonTitile:(NSString *)btnTitle;
@end


@interface DetailViewController : MasterViewController

@property (nonatomic, assign) id<MasterDelegate> customDelegate; 

#DetailViewController.m

if([self.customDelegate respondsToSelector:@selector(getButtonTitile:)])
{
          [self.customDelegate getButtonTitile:button.currentTitle];    
}

#MasterViewController.m

create obj of DetailViewController

DetailViewController *obj = [[DetailViewController alloc] init];
obj.customDelegate = self;
[self.navigationController pushViewController:reportTypeVC animated:YES];

and add delegate method in MasterViewController.m for get button title.

#pragma mark -
#pragma mark - Custom Delegate  Method

-(void) getButtonTitile:(NSString *)btnTitle;
{
    NSLog(@"%@", btnTitle);

}
于 2013-04-01T20:30:46.013 回答