我正在SplitViewController中的“主视图”和“详细视图”之间实现一个简单的委派(横向,因此两个视图都可见)。当我按下一个按钮时,详细信息中的表格视图应该更新。
这是中的声明
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 updateTable执行以下操作:
[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
是否为零。您有一个声明的委托属性:
@property (nonatomic, weak) id <DetailVCDelegate> delegate;
但是,财产只有在您给予它之前才具有价值。您可以将MasterViewController实例的
delegate
属性设置为其他一些实例(显然是采用DetailVCDelegate协议的实例)。代表不是天生的:他们是有意制造的。关于ios - SplitView Controller中的委派问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21945340/