我正在寻找一个如何创建动画行菜单的例子,如Facebook&适用于iPhone的Twitter应用程序。我看到TTTableViewController
有showMenu:forCell:
方法,但我找不到任何如何使用它的示例。特别是在URL Navigator选择器的上下文中,但任何示例都会很棒。
答案 0 :(得分:0)
你能找到一个例子。
我也遇到了和你一样的问题。我找不到一个星期前使用TTTableViewController showMenu:forCell:方法的例子。在弄乱代码之后,我想出了这个......
创建TTTableViewCell的子类,并将UIButton(作为启动菜单视图的触发器)添加到视图中。
@interface MyViewCell : TTTableViewCell {
}
- (id) initWithName:(NSString *)name target:(id)target action:(SEL)action {
// ...
UIButton *moreButton = [UIButton buttonWithType:UIButtonTypeCustom];
moreButton.frame = CGRectMake(268.0f, 6.0f, 32.0f, 32.0f);
[moreButton setImage:TTIMAGE(@"bundle://Icon_More.png")
forState:UIControlStateNormal];
[moreButton addTarget:target action:action
forControlEvents:UIControlEventTouchUpInside];
[self moreButton];
// ...
}
接下来,创建一个TTTableViewController的子类,并将自定义TTTableViewCells添加到数据源。
@interface MyTableViewController : TTTableViewController {
}
- (void) createModel {
self.dataSource = [TTListDataSource dataSourceWithObjects:
[[[ContactViewCell alloc] initWithName:@"Cell 1"
target:self
action:@selector(moreButtonDidPress:)]
autorelease],
[[[ContactViewCell alloc] initWithName:@"Cell 2"
target:self
action:@selector(moreButtonDidPress:)]
autorelease],
nil];
}
在动作处理程序中,调用showMenu:forCell:。诀窍是确定按钮属于哪个单元格,然后用菜单视图替换该单元格。这就是我所做的。
- (void) moreButtonDidPress:(id)sender {
// Load our custom menu view from a nib.
UIView *menuView = [[UIView alloc] initWithFrame:cell.contentView];
UIButton *moreButton = (UIButton *) sender;
// Convert plusButton bounds to the the coordinate system of table view
// and then get the cell containing the button.
CGRect coord = [plusButton convertRect:moreButton.bounds toView:self.tableView];
NSIndexPath *path = [self.tableView indexPathForRowAtPoint:coord.origin];
TTTableViewCell* cell = (TTTableViewCell*) [self.tableView
cellForRowAtIndexPath:path];
// Now call showMenu with the menu to display on the associated cell.
[self showMenu:menuView forCell:cell animated:YES];
}
它并没有完全使用URL Navigator选择器,但它功能正常。