从其他控制器遍历 viewController 层次结构

发布于 2024-12-12 06:37:35 字数 807 浏览 0 评论 0原文

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

-UIViewController
--UI视图
---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 不是正确的方法 感谢您的帮助,
刷子51

i want to send a message to a tableView in another controller.
Actually i am in detalViewController.
The tableView i want to address is in DashboardViewController:

-UIViewController
--UIView
---UITableView //i want to address this tableView.

How can i do that?
In my DetailViewController IBAction i have this code:

NSLog(@"previousBtn");

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

My aim is to set the new selectRowAtIndexPath:

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

but parent.tableViews is not the correct way
Thanks for help,
brush51

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尴尬癌患者 2024-12-19 06:37:36

这是一个解决方法:

我检查子视图数组,从 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];
}

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

Here is a workaround:

iam checking the subviews array and from NSLog i see the tablview was objectAtIndex:0. Then i have put that in an "if then else" and do something with the table.
In my case i do selectRowAtIndexPath: and 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];
}

Hope someone can use this code and save a lot of time for try and error :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文