在我的应用程序中,我有一个ViewController,它将在iPhone上显示内容为UITableViewController
,在iPad上显示UICollectionViewController
,我希望只有一个MYContentViewController
分别显示正确的ViewController。 这是多重继承的理想情况,其中我有一个MYContentTableViewController
和MYContentCollectionViewController
,每个都继承自UITable/CollectionViewController
和MYContentViewController
,但很明显Cocoa不支持多重继承,那么最佳解决方案是什么?
另外,我不希望MyContentViewController
只有UITableView
或UICollectionView
,因为从iOS7开始,如果使用实际>,那么你会得到时髦的转换 UICollectionViewController。
目前我正在考虑使用Protocols和'ParentViewController'是最好的方式但如果有一种方法不让'ParentViewController'与{{1}相关,我会很喜欢它}}:
addChildViewController
@protocol MYContentViewControllerDelegate <NSObject>
- (void)didSelectItemAtIndexPath:(NSIndexPath *)indexPath;
@end
@protocol MYContentViewControllerDataSource <NSObject>
- (MYDataProvider *)dataProviderForIndexPath:(NSIndexPath *)indexPath;
- (NSInteger)numberOfItemsInSection:(NSInteger)section;
- (NSInteger)numberOfSections;
@end
@protocol MYContentViewController <NSObject>
- (void)reloadData;
- (void)reloadSections:(NSIndexSet *)sections;
- (void)reloadItemsAtIndexPaths:(NSArray *)indexPaths;
- (void)deleteItemsAtIndexPaths:(NSArray *)indexPaths;
- (void)insertItemsAtIndexPaths:(NSArray *)indexPaths;
@property (nonatomic, weak) id <MYContentViewControllerDataSource> dataSource;
@property (nonatomic, weak) id <MYContentViewControllerDelegate> delegate;
@end
将实现dataSource和委托,因此它将提供所有数据并对Collection和Table的所有交互起作用,并拥有“父”视图控制器的任何交互(如导航按钮交互)。对于表格和集合,MyContentViewController
会MyContentViewController
。
答案 0 :(得分:1)
我要尝试的第一件事是将UITableView
视为UICollectionView
的一个简单模拟的特殊情况,具有垂直布局和全宽度单元格。
然后,您只能使用具有两种布局和单元格类型的常规UICollectionViewController
。其中一种布局/单元格类型可以设计为模仿UITableView/UITableViewCell
。