委托报关无法从呈现视图控制器
// FolderListViewController.h
#import <UIKit/UIKit.h>
#import "Folder.h"
@protocol FolderSelectionDelegate <NSObject>
@required
- (void)setFolder:(Folder *)folder;
@end
@interface FolderListViewController : UITableViewController
@property (nonatomic, assign) id<FolderSelectionDelegate> delegate;
- (IBAction)showDashboard:(id)sender;
@end
代表从didSelectRowAtIndexPath方法称为访问委托方法:
// FolderListViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self.delegate setFolder:dataSource[indexPath.row]];
}
的VC应接收该消息
#import <UIKit/UIKit.h>
#import "FolderListViewController.h"
#import "Folder.h"
@interface ProjectListViewController : UITableViewController <FolderSelectionDelegate, UISplitViewControllerDelegate, UISearchBarDelegate, UINavigationControllerDelegate>
@property (nonatomic,retain)UIActivityIndicatorView *activityIndicatorObject;
@property (nonatomic, copy)Folder *folder;
-(void)loadProjects:(Folder*)folder;
@end
介绍VC的行动
- (void)foldersButtonTapped {
UINavigationController *vc = [[UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil] instantiateViewControllerWithIdentifier:@"FolderListNavController"];
vc.delegate = self;
[self presentViewController:vc animated:YES completion:nil];
}
委托方法实现
- (void)setFolder:(Folder *)folder {
_folder = folder;
[self loadProjects:folder];
}
我已经经历了多线程上读到这里,还没有任何运气。起初,我在展示FolderListVC(即vc.delegate = self)时没有引用ProjectListVC设置。虽然这似乎不是问题。我正在研究为iPad构建的应用程序,并将其扩展到所有设备上。这里的实现工作(它被设置为分割视图控制器)。任何帮助将不胜感激
它在我看来你是设置'UINavigationController'的委托,而不是你的委托。您需要在“FolderListViewController”实例上设置委托。您也可以将您的委托属性重命名为'folderSelectionDelegate',以避免混淆。 – albertamg
非常感谢 - 这表明我朝着正确的方向 – user1987502