0

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

它具有 SelectCountryCell 来选择国家,单击该国家时,将打开新UITableView的国家列表。

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

我该怎么做呢?

4

3 回答 3

0

主视图控制器.h

#import "DetailViewController.h"

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

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

@end

主视图控制器.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

细节视图控制器.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];
}
于 2013-04-10T10:57:13.030 回答
0

您应该将静态单元绑定到您的插座,UITableViewController并将配置文件同步方法放入该- viewWillAppear方法。

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

于 2013-04-10T09:58:42.443 回答
0

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

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

然后你可能会得到你想要的。

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

于 2013-04-10T09:58:45.427 回答