gpt4 book ai didi

ios - SplitView Controller 中的委派问题

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

我在 SplitViewController 中实现主视图和详细 View 之间的一个简单委托(delegate)(横向方向,因此两个 View 都可见)。当我按下一个按钮时,详细信息中的 TableView 应该更新。

声明如下MasterViewController.h

@protocol DetailVCDelegate <NSObject>
- (void)requestTableUpdate;
@end
@interface MasterViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
- (IBAction)updateTable:(id)sender;
@property (nonatomic, weak) id <DetailVCDelegate> delegate;

在 MVC.m 中为 IBaction 更新表执行以下操作:

[self.delegate requestTableUpdate];

然后在Detail.h中

#import "MasterViewController.h"
@interface DetailViewController : UITableViewController <DetailVCDelegate>

在Detail.m中

- (void)requestTableUpdate
{
NSLog(@"called");
[self.tableView reloadData];
}

永远不会调用日志,也不会更新 tableView。我将不胜感激有关如何解决此问题的任何建议,我想我缺少一些特定于 SplitViews 的委派规则

最佳答案

当您向某物发送消息但没有任何反应时,您的第一个想法应该是:嗯,也许我正在向 nil 发送消息。

所以,你说:

[self.delegate requestTableUpdate];

但是没有任何反应。所以你应该立即检查 self.delegate 是否为 nil。

你有一个声明的委托(delegate)属性:

@property (nonatomic, weak) id <DetailVCDelegate> delegate;

但是一个属性没有值(value),直到你给它一个。由将您的 MasterViewController 实例的 delegate 属性设置为某个其他实例(显然是采用 DetailVCDelegate 协议(protocol)的实例)。代表不是天生的:他们是有意制造的。

关于ios - SplitView Controller 中的委派问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21945340/

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