路过的UITableViewCell和的UITableViewController之间的数据?(Pa

2019-08-18 18:48发布

我在Xcode 4.6创建主详细信息模板的项目,我添加自定义单元格2个文本框。 我也创造了新的类,这是的UITableViewCell的子类,这个类中,我创建了文本字段网点。 当用户键入的东西的NSMutableArray被更新,并能正常工作。 现在我想知道如何通过这个数组回到MasterViewController(的UITableViewController),这样我就可以使用这些数据来显示计算。

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

Answer 1:

你不应该保持数据里面UITableViewCell ,因为它打破了MVC。

你需要得到的一个参考UITextField你的细胞。 这是我在一个登录表单怎么办:

我有一个名为自定义单元格的子类TextFieldCell ,它有一个出口被称为textField ,我想我UITableViewController必须将这些引用UITextField秒。

首先,我打开我的故事板,电池级设置为TextFieldCell比连接到的UITextField细胞文本框的出口。 比我这增加了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:因为当我创建的细胞添加到表视图的。



Answer 2:

你的情况,你需要创建协议:

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

此外阅读本题

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

}


文章来源: Passing data between UITableViewCell and UITableViewController?