我在xcode 4.6中创建了主细节模板项目,并添加了包含2个文本字段的自定义单元格。我还创建了新类,它是UITableViewCell的子类,在这个类中我创建了文本字段的出口。当用户输入更新NSMutableArray的东西时,这工作正常。现在我想知道如何将此数组传递回MasterViewController(UITableViewController),以便我可以使用此数据来显示计算。
我尝试在UIViewControllers之间使用教程代理,但我不断收到错误。任何帮助表示赞赏。
答案 0 :(得分:2)
您不应该将数据保留在UITableViewCell
内,因为它会破坏MVC。
您需要在单元格上获得UITextField
的引用。这就是我在登录表单中的表现:
我有一个名为TextFieldCell
的自定义单元子类,它有一个名为textField
的插座,我希望我的UITableViewController
引用这些UITextField
。
首先,我打开我的故事板,将单元格类设置为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;
(…)
}
现在,我可以访问loginTextField
和passwordTextField
的值。我在tableView:cellForRowAtIndexPath:
上这样做,因为当我创建要添加到表格视图的单元格时。
答案 1 :(得分: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);
}