我正在使用JASidePanels作为我的应用程序(Facebook菜单样式)。
LeftPanel是我的菜单(tableView),我显示内容的CenterPanel有一个collectionView。
当我点击中心collectionView中的某个项目时,我还想选择与我的LeftPanel中菜单中的tapped项目相同的indexPath。
我尝试过这样做,但它没有用。
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
// Other codes ...
LeftMenuViewController *leftMC = [[LeftMenuViewController alloc] init];
[leftMC.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:0];
}
我该怎么办?
感谢您的帮助!
答案 0 :(得分:0)
左侧菜单控制器应该已经存在且很可能是可见的。因此,创建一个实际上是不可行的(你会在每个选择事件中创建它 - 没有意义)。
我假设左菜单和集合视图控制器之间的关系是主要细节(通过导航或其他控制器)。两个控制器彼此“交谈”的通常设计模式是@protocol
//CollectionViewController.h
@protocol LeftMenuProtocol;
@interface ...
@property (nonatomic, assign) id<LeftMenuProtocol> delegate;
...
@end
@protocol LeftMenuProtocol <NSObject>
-(void)collectionView:(UICollectionView*)collectionView
didSelectItemAtIndexPath:(NSIndexPath*)indexPath;
@end
创建集合视图控制器时,将左侧菜单设置为其委托。发生选择时,使用self
和所选索引路径调用委托方法。
然后菜单可以适当地做出反应,例如通过滚动到正确的行
[self.tableView scrollToRowAtIndexPath:indexPath
atScrollPosition:UITableViewScrollPositionMiddle
animated:YES];
有关协议的一些常规帮助,请参阅Cocoa Core Competencies。