我的主视图中有一个UITableView
,UINavigationBar
中有一个'添加'按钮,它会推送到另一个视图,允许用户将另一个对象添加到tableview。我在这个视图中有一个协议,允许将信息发送回主视图。
我的问题是每当我尝试将从协议发送的这个新对象(NSMutableDictionary
)添加到主视图中的NSMutableDictionary
属性时,它就不会添加。我尝试添加NSLog
,并说该对象为null
。如果我在viewDidLoad
方法中初始化此对象,只要UINavigationController
弹出视图,它就会运行,并重置字典中的所有内容。我不知道在哪里初始化对象以确保它保存所有内容。
协议工作正常,但我不能对它发送的对象做任何事情。
在AddCellViewController.h中:
#import <UIKit/UIKit.h>
@protocol AddCellDelegate <NSObject>
@required
-(void)passCellInfo:(NSMutableDictionary *)cellInfo;
@end
@interface AddCellViewController : UITableViewController <UITextFieldDelegate> {
id <AddCellDelegate> delegate;
}
@property (strong) id <AddCellDelegate> delegate;
@end
在AddCellViewController.m(使用该协议的方法)中:
-(void)sendObject{
[[self delegate] passCellInfo:newCellInfo];
[self.navigationController popToRootViewControllerAnimated:YES];
}
MainView.m中的:
-(void)passCellInfo:(NSMutableDictionary *)cellInfo{
[self.cellInformation setValue:cellInfo forKey:[cellInfo objectForKey:@"cell_title"]];
[self.cells addObject:[cellInfo objectForKey:@"cell_title"]];
[self.tableView reloadData];
NSLog(@"%@: cellInfo - cellInformation: %@ - cells: %@",cellInfo ,self.cellInformation,self.cells); //logs the object passed from the protocol (this works), the cellInformation object, and cells object (these return null)
}
答案 0 :(得分:0)
您可以在静态或全局类中使用NSMutableDictionary属性,并可以从tableview或任何其他视图轻松访问它:
每次出现tableView时,都应该从此全局类刷新表的数据。
如何使用它的一些示例: How to implement global static class
答案 1 :(得分:0)
在您的代码中,您执行此操作。你每次都使用相同的密钥。所以它会被取代。
[self.cells addObject:cellInfo];
我会告诉你一个简单的方法。从init方法将mutableDictionary发送到secondView。在类级别mutableDictionary中复制。不要分配或初始化。在该词典中添加新项目。它将反映在mainView字典中。在mainView viewWillAppear方法中调用[tableView reloadData]。