从另一个控制器浏览控制器层次结构

时间:2011-10-26 11:54:41

标签: uitableview uiviewcontroller hierarchy

我想向另一个控制器中的tableView发送消息。 其实我在detalViewController。 我想要解决的tableView是在DashboardViewController:

-UIViewController
--UIView
--- UITableView //我想解决这个tableView。

我该怎么做? 在我的DetailViewController IBAction中,我有这段代码:

NSLog(@"previousBtn");

DashboardViewController *parent = (DashboardViewController *)self.parentViewController;
NSIndexPath *actualIndexPath = selectedRow2;
NSIndexPath * newIndexPath = [NSIndexPath indexPathForRow:actualIndexPath.row-1 inSection:actualIndexPath.section];  

我的目标是设置新的selectRowAtIndexPath:

[parent.tableViews selectRowAtIndexPath:newIndexPath animated:YES  scrollPosition:UITableViewScrollPositionMiddle];  

但是parent.tableViews不是正确的方法 谢谢你的帮助,
brush51

1 个答案:

答案 0 :(得分:1)

这是一种解决方法:

iam检查子视图数组,从NSLog我看到tablview是objectAtIndex:0。然后我把它放在“if then else”和做某事的表中。 在我的情况下,我做 selectRowAtIndexPath: didSelectRowAtIndexPath:

DashboardViewController *parent = (DashboardViewController *)self.parentViewController;

NSIndexPath *actualIndexPath = selectedRow2;
NSIndexPath * newIndexPath = [NSIndexPath indexPathForRow:actualIndexPath.row-1 inSection:actualIndexPath.section];
//[parent.tableViews selectRowAtIndexPath:newIndexPath animated:YES scrollPosition:UITableViewScrollPositionMiddle];

if([parent.view.subviews objectAtIndex:0]) {
    NSLog(@"drin!");
    UIView * subview = (UIView *) [parent.view.subviews objectAtIndex:0];
    UITableView *tView = (UITableView *) subview;

    [tView selectRowAtIndexPath:newIndexPath animated:YES scrollPosition:UITableViewScrollPositionMiddle];
    [tView.delegate tableView:tView didSelectRowAtIndexPath:newIndexPath];
}

希望有人可以使用此代码并节省大量时间进行尝试和错误:)