gpt4 book ai didi

IOS Reveal View - 在另一个 UIViewController 中触发函数

转载 作者:行者123 更新时间:2023-11-28 22:11:01 24 4
gpt4 key购买 nike

我在 IOS 7 应用程序中使用 SWRevealViewController 类。

我有一个前 View (MainHP_TableViewController) 和一个后 View (messagesTVController),向右滑动会显示左 View 以显示消息。

我的问题是我需要在关闭显示时在前 View 中触发一个方法(基本上消息计数需要更新)。

我在 SWRevealViewController 中找到了一个操作来附加一个事件触发器,并在我的主视图 Controller 中设置了一个方法来接收它,如下所示 -

swRevealViewController.m

    MainHP_TableViewController *mhp = [[MainHP_TableViewController alloc]  initWithNibName:nil bundle:nil];
[mhp readyBtn];

MainHP_TableViewController.m

- (void)readyBtn{

NSLog(@"passed back");

_btnNo = 1;

// NSLog(@"Value of hello = %@", _btnNo);

//[self.tableView reloadData];
}

发生的事情是滑动操作事件有效并且传回的消息出现在控制台中 - _btnNo var 更改为 1 - 但如果我取消注释 NSLog 行或重新加载数据行(上面的屏幕截图)应用程序崩溃.. 控制台中没有任何错误令人讨厌..

我可以从 MainHP_TableViewController 本身的按钮调用相同的方法并且一切正常 - 所以我猜测它是从另一个 Controller 调用的方法的某种权限问题?但这让我很头疼 - 所以任何提示都非常受欢迎!

最佳答案

我觉得用NSNotificationCenter应该会更好;在前面的 View Controller 中,您可以在 viewDidLoad 中注册观察者,例如:

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(notificationRecived:)
name:@"reloadData"
object:nil];

并放置选择器方法:

- (void)notificationRecived:(NSNotification *)notification {
if([notification.name isEqualToString:@"reloadData"]) {
// Do stuff here
// [self.tableView reloadData];
}
}

在后 View Controller 中,您可以简单地发布通知:

[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadData" object:nil userInfo:nil];

关于IOS Reveal View - 在另一个 UIViewController 中触发函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22940590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com