我在Xcode 4.6中创建了主从模板项目,并添加了一个带有2个文本字段的自定义单元格。我还创建了一个UITableViewCell子类的新类,在其中为文本字段创建了输出口。当用户输入时,NSMutableArray被更新,这很好用。现在我想知道如何将此数组传回MasterViewController(UITableViewController),以便我可以使用这些数据来显示计算结果。
我尝试使用UIViewController之间委托的教程,但始终出现错误。任何帮助都将不胜感激。
我在Xcode 4.6中创建了主从模板项目,并添加了一个带有2个文本字段的自定义单元格。我还创建了一个UITableViewCell子类的新类,在其中为文本字段创建了输出口。当用户输入时,NSMutableArray被更新,这很好用。现在我想知道如何将此数组传回MasterViewController(UITableViewController),以便我可以使用这些数据来显示计算结果。
我尝试使用UIViewController之间委托的教程,但始终出现错误。任何帮助都将不胜感激。
不应该将数据保存在UITableViewCell
中,因为这会破坏MVC。
您需要获取单元格中UITextField
的引用。以下是我在登录表单中的做法:
我有一个名为TextFieldCell
的自定义单元格子类,它有一个名为textField
的outlet,我希望我的UITableViewController
有对这些UITextField
的引用。
首先,我打开我的storyboard,将单元格类设置为TextFieldCell,然后将UITextField连接到cell textField outlet。然后我将以下内容添加到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:
上这样做,因为那是我正在创建要添加到表视图的单元格时。
UITableViewCell
子类,并连接你所需的outlets到UITextField
到cell上。 - Marco PompeitableView:cellForRowAtIndexPath:
方法中获取指向文本字段的变量。但是你也可以直接获取指向单元格的变量,然后访问该单元格内部的数据结构。需要注意的是,在视图中存储和特别处理数据通常是不好的做法。 - Marco Pompei#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);
}