在iPad上的DetailView上点击按钮调用didSelectRowAtIndexPath

时间:2012-01-12 00:08:00

标签: xcode uitableview ipad

我正在制作一个iPad SplitView应用程序,我在左边有一个MasterView表(横向)和右边的DetailView(到目前为止没有新的......)。当我单击表格单元格时,detailView会显示单元格详细信息。 我在detialView上还有一个按钮,可以向前移动到下一个单元格,还有一个按钮可以向后移动到前一个单元格。

我的问题是,每当我点击按钮时,我想更改左侧表格视图中的单元格选择,以便用户知道他目前在哪个单元格。

我尝试通过调用tableView:didSelectRowAtIndexPath:方法,但我似乎无法正确设置NSIndexPath(我想发送一个整数来指示下一个单元格的编号)。

以下是调用selectRowAtIndexPath:方法的代码:

iPadHelloWorldAppDelegate是AppDelegate。 masterViewController是主控制器,上面有表格。

// method to set the image for the previous letter
-(IBAction)previousLetter{
    iPadHelloWorldAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    NSLog(@"IndexOfImage equals: %@", appDelegate.indexOfImage);

    int number = [[appDelegate.indexOfImage substringFromIndex:5] intValue];

    NSString *imageName = [NSString stringWithFormat:@"image%@.png",[NSString stringWithFormat:@"%d", number-1]];
    [self.letterImageView setImage:[UIImage imageNamed:imageName]];
    NSLog(@"Image name: %@", imageName);

    appDelegate.indexOfImage = [imageName substringToIndex:6];       

    NSIndexPath *currentPath = appDelegate.currentPath;
    NSIndexPath *nextPath = [NSIndexPath indexPathForRow:currentPath.row-1 inSection:currentPath.section];

    [masterViewController.tableView selectRowAtIndexPath:nextPath animated:YES scrollPosition:UITableViewScrollPositionNone];    

    NSLog(@"currentPath: %@", currentPath);    
    appDelegate.currentPath = nextPath;        
    NSLog(@"nextPath: %@", nextPath);    

请帮忙......

2 个答案:

答案 0 :(得分:1)

我认为这可能有效。对于您的转发按钮,请使用此代码

NSIndexPath *currentPath = [tableView indexPathForSelectedRow];
NSIndexPath *nextPath = [NSIndexPath indexPathForRow:currentPath.row+1 inSection:currentPath.section];
[tableView selectRowAtIndexPath:nextPath animated:YES scrollPosition:UITableViewScrollPositionMiddle];

对于“后退”按钮,将-1替换为+1。

有关indexPathForRow:inSection:method。

,请参阅NSIndexPath UIKit Additions documentation

答案 1 :(得分:0)

“tableView:didSelectRowAtIndexPath:”是委托方法;你不应该直接打电话。相反,尝试调用“selectRowAtIndexPath:animated:scrollPosition:”