我正在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/

10-16 10:56