gpt4 book ai didi

ios - tabBarController 将委托(delegate)方法发送到不响应它们的选项卡

转载 作者:行者123 更新时间:2023-11-29 12:43:20 24 4
gpt4 key购买 nike

我使用 Storyboard设置了一个带有三个选项卡栏的应用程序。当我单击其中一个选项卡并让单例数据源类执行操作,而不是立即切换到另一个选项卡时,当单例完成从外部获取数据时,它会尝试将其发送到当前选项卡,这会导致崩溃,因为当前选项卡我在不响应我在单例委托(delegate)中实现的特定委托(delegate)方法,并且不应实现,因为没有理由让该特定选项卡执行该操作。这是我的委托(delegate)当前的设置方式。

@class DataHolder;

@protocol DataHolderControllerDelegate <NSObject>
@required
-(void)logout;
@optional
-(void)friendsQuarryDidFinishWithData;
-(void)pendingFriendsQuarryDidFinishWithData;
-(void)allUsersQuarryDidFinishWithData;
-(void)additionalFriendsFoundAndAdded;
-(void)messageQuarryFinishedWithData;
-(void)thumbnailQuaryDidFinishWithData;
-(void)sentRequestUsersFoundWithData;
@end

@interface DataHolder : NSObject;
@property (nonatomic,weak) id <DataHolderControllerDelegate>delegate;

当查询数据时,在方法中调用委托(delegate)。

-(void)messageQuarry{
PFQuery *messageQUery = [PFQuery queryWithClassName:@"Message"];
messageQUery.cachePolicy = kPFCachePolicyCacheThenNetwork;
[messageQUery whereKey:@"recipientIds" equalTo:[[PFUser currentUser] objectId]];
[messageQUery whereKey:@"file_type" equalTo:@"original_image.png"];
[messageQUery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (error){
NSLog(@"ERROR: %@, %@", error, [error userInfo]);
}else{
messagesArray = [NSMutableArray arrayWithArray:objects];
[delegate messageQuarryFinishedWithData];
}
}];
}

然后, View Controller 有一个委托(delegate)方法,这是在调用上面的委托(delegate)方法时调用的inboxViewController 委托(delegate)方法。

-(void)messageQuarryFinishedWithData{
self.messages = [NSMutableArray arrayWithArray:dataHolder.getMessages];
[self.tableView reloadData];
}

最佳答案

请记住,委托(delegate)应该是亲密的,这意味着它是一对一的关系。看来您正在寻找的是一对多关系,这就是 NSNotificationCenter 的用途。我建议从 Apple 查找 NSNotificationCenter 文档。

关于ios - tabBarController 将委托(delegate)方法发送到不响应它们的选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24314161/

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