繁体   English   中英

在UITableViewCell和UITableViewController之间传递数据?

[英]Passing data between UITableViewCell and UITableViewController?

我在xcode 4.6中创建了主细节模板项目,并添加了带有2个文本字段的自定义单元格。 我还创建了新类,它是UITableViewCell的子类,在这个类中我创建了文本字段的出口。 当用户输入更新NSMutableArray的东西时,这工作正常。 现在我想知道如何将此数组传递回MasterViewController(UITableViewController),以便我可以使用此数据来显示计算。

我尝试在UIViewControllers之间使用教程代理,但我不断收到错误。 任何帮助表示赞赏。

您不应该将数据保留在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;
    (…)
}

现在我可以访问loginTextFieldpasswordTextField的值。 我在tableView:cellForRowAtIndexPath:上执行此操作tableView:cellForRowAtIndexPath:因为那时我正在创建要添加到表视图的单元格。

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

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

另请阅读此问题

#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);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM