2012-04-22 32 views
0

我创建了一个自定义TablePickerViewController这是的子类UITableViewController。我使用这个类来显示一个自定义类型的对象列表TablePickerItem如何生成通用表格视图控制器?

我使用TablePickerViewController多次在我的iOS应用程序,以显示不同类型的列表,其中用户必须选择一个项目 - 然后另一个视图控制器MainViewController应该在此选择反应,并做一些事情。

我创造了这个协议,并在TablePickerViewController创建一个代表属性:

@protocol TablePickerViewControllerDelegate <NSObject> 
- (void)tablePickerViewController:(TablePickerViewController *)controller 
        didSelectItem:(TablePickerItem*)item; 
@end 

当我安装一个新的TablePickerViewControllerMainViewController它也被设置为代理 - 比将在用户点击表格视图中的单元时通知。

的问题是,我MainViewController将设置多个TablePickerViewController不同的数据(TablePickerItem)。我应该如何设置我的MainViewController来处理这些多重TablePickerViewController?来自它们每个的事件将导致调用我的MainViewController中的相同协议方法。

此外,我需要获取TablePickerItem表示的元素,因为我需要知道元素ID在tablePickerViewController:didSelectItem方法中的作用。我是否应该通过向TablePickerItem添加类似@property (nonatomic) id element的东西来处理此问题,并将原始对象设置为此属性,然后创建它?

也许有人可以给我一个关于如何创建一个通用表视图控制器的例子,如果我的解决方案似乎以错误的方式完成。

+0

你能分享这门课吗?我有同样的需要,如果可以发送到[email protected] – Nepster 2014-09-24 10:04:25

回答

0

我并不完全确定你的设置,但是如果你有多个选择器反馈给主控制器,那么你可以只提供选择器的引用,例如,

// MainViewController.m 

@interface MainViewController() 

@property (nonatomic, strong) TablePickerViewController *picker1; 
@property (nonatomic, strong) TablePickerViewController *picker2; 
// ... and so on. Obviously you know your problem domain so you can change 
// the terrible naming above to something appropriate 

@end 

@implementation MainViewController 


// ... 

- (void)theMethodWhereYouSetUpYourPickers; 
{ 
    TablePickerViewController *picker1 = [[TablePickerViewController alloc] init]; 
    picker1.delegate = self; 
    self.picker1 = picker1; 
    // ... 
} 

- (void)tablePickerViewController:(TablePickerViewController *)controller 
       didSelectItem:(TablePickerItem*)item; 
{ 
    if (controller == self.picker1) { 
     NSLog(@"Something was picked in picker 1 %@", item); 
    } else if (controller == self.picker2) { 
     NSLog(@"Something was picked in picker 2 %@", item); 
    } 
} 

// ... 

@end 
相关问题