如何将数据从tableview传递到另一个tableview单元格?

时间:2013-04-10 09:42:30

标签: ios uitableview

我使用静态UITableView来显示客户的个人资料。

它有SelectCountryCell来选择国家/地区,当点击该国家/地区时,会打开包含国家/地区列表的新UITableView

当我从Country TableView中选择国家时,它应显示在之前的TableView的SelectCountryCell中。

我该怎么做?

3 个答案:

答案 0 :(得分:0)

您应该将静态单元格绑定到UITableViewController中的出口,并将配置文件同步方法添加到- viewWillAppear方法。

当用户更改国家/地区列表中的国家/地区时,配置文件会更新。之后,当用户使用静态内容移回UITableViewController实例时,配置文件数据将自动更新。

答案 1 :(得分:0)

您可以在CityTableView中定义委托,然后在此委托中定义方法。

您应该在CountryTableView中实现此方法。

然后你可能得到你想要的东西。

我只给你一个想法。你应该自己找到细节。

答案 2 :(得分:0)

<强> MasterViewController.h

#import "DetailViewController.h"

@interface MasterViewController : UITableViewController <DetailProtocol> // Note this.

@property (strong, nonatomic) DetailViewController *detailViewController;
@property (strong, nonatomic, readwrite) NSString *selectedCountry;

@end

<强> MasterViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (!self.detailViewController) {
        self.detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
    }
    self.detailViewController.delegate = self; // THIS IS IMPORTANT...
    [self.navigationController pushViewController:self.detailViewController animated:YES];
}

// Note this -- It's a delegate method implementation
- (void)setCountry:(NSString *)country
{
    self.selectedCountry = country;
}

<强> DetailViewController.h

@protocol DetailProtocol <NSObject>
-(void)setCountry:(NSString *)country;
@end

@interface DetailViewController : UIViewController

@property (strong, nonatomic) IBOutlet UITableView *tableView;
@property (unsafe_unretained) id <DetailProtocol> delegate; // Note this

@end

<强> DetailViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
    [self.delegate setCountry:[countries objectAtIndex:indexPath.row]]; // Note this
    [self.navigationController popViewControllerAnimated:YES];
}