【发布时间】:2011-07-17 18:39:44
【问题描述】:
我正在制作一个应用程序,其中有一个在应用程序启动时加载的 Tableview。单击一行后,我会看到一个带有导航控制器和工具栏的视图。在工具栏上,我为后退和前进制作了两个按钮(一个后退箭头和一个前进箭头)。如何对这些按钮进行编码以选择表格的下一行和上一行(后退表示上一行,前进表示下一行)?
【问题讨论】:
标签: objective-c ios uitableview button uiview
我正在制作一个应用程序,其中有一个在应用程序启动时加载的 Tableview。单击一行后,我会看到一个带有导航控制器和工具栏的视图。在工具栏上,我为后退和前进制作了两个按钮(一个后退箭头和一个前进箭头)。如何对这些按钮进行编码以选择表格的下一行和上一行(后退表示上一行,前进表示下一行)?
【问题讨论】:
标签: objective-c ios uitableview button uiview
您可能希望让您的表格视图控制器成为详细视图控制器的委托,然后定义一个委托协议来告诉委托何时按下这些按钮。这样,表格视图控制器就可以对表格视图做任何需要的事情。
一种方法:
@implementation MyTableViewController
...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)p {
MyDetailViewController *vc = [[MyDetailViewController alloc] initWithRow:p.row];
// configure vc
vc.delegate = self;
[self.navigationController pushViewController:vc animated:YES];
[vc release];
}
- (void)myDetailViewControllerDidSelectPrevious:(MyDetailViewController *)vc {
// use vc.row-1 to update the view controller or push a new one
}
- (void)myDetailViewControllerDidSelectNext:(MyDetailViewController *)vc {
// use vc.row+1 to update the view controller or push a new one
}
@end
@protocol MyDetailViewControllerDelegate
- (void)myDetailViewControllerDidSelectPrevious:(MyDetailViewController *)vc;
- (void)myDetailViewControllerDidSelectNext:(MyDetailViewController *)vc;
@end
@implementation
...
- (void)nextButtonPressed:(id)sender {
[self.delegate myDetailViewControllerDidSelectNext:self];
}
- (void)previousButtonPressed:(id)sender {
[self.delegate myDetailViewControllerDidSelectPrevious:self];
}
@end
【讨论】: