将数据从UITableCell传递到UITabView

时间:2014-12-04 04:20:02

标签: ios xcode

我目前正在开发一个项目,该项目需要在UITableView中显示客户列表,然后相关的单元格将切换到TabView以在选项卡式ui中显示详细的客户记录。

我已经使用所需的TableView设置了故事板并且已经填好了。 TabViews所有设置我已经向主TabView控制器添加了一个自定义类,它可以获取ID(询问服务和返回更多数据所需)和客户名称。我还为第一个选项卡添加了一个UIViewController,我需要在其中获取ID值。

我似乎无法掌握传递的ID或公司名称。我已经尝试导入UITabView的.h文件。我知道UITabView .h文件正在填充.m文件中的值我使用客户名称更新导航栏的标题。但是,每当我在线上断点获取单个选项卡的.m文件中的ID时,它总是返回nil。

我使用以下代码尝试获取此值:

companyTabController *headerData = [companyTabController alloc];
_companyName_lbl.text = headerData.companyName; 
_companyID_lbl.text = headerData.ID;

我尝试了上述的几种变体,但都无济于事。

3 个答案:

答案 0 :(得分:7)

您也可以使用NSUserDefaults来保存数据,我认为这是在整个应用程序中保存数据的最简单方法。

答案 1 :(得分:1)

根据您发布的代码,headerData是一个新实例。因此,companyNameID将为零,除非您为它们指定了一些值。

因为,您提到您可以更新导航栏标题,尝试使用相同的对象来获取此控制器中的值。 (也许你可以使用单例对象)

答案 2 :(得分:0)

如果您需要使用prepareForSegue:sender:方法,那么:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
companyTabController *companyTC = [segue destinationViewController];
companyTC.companyName_lbl.text = headerData.companyName;
etc
}

如果您不相信,则必须将其实例化为:

- (void) didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *selectedCell = [self.tableView cellForRowAtIndexPath:indexPath];
companyTabController *companyTC = [self.storyboard instantiateViewControllerWithIdentifier:@"CopmanyTabController"];
companyTC.companyName_lbl.text = selectedCell.textLabel.text or = headerData.companyName;
[self.navigationController pushViewController:companyTC animated:YES];
}