上下文
我正在把一些有点复杂的东西放在一起。
我在一个XIB文件中设计了一系列自定义表格单元格,每个单元格都属于MyCustomCell
类。这些单元格包含标签插座,以及步进器和滑块之类的东西,让用户可以更改驱动插座的属性。
示例单元格:http://s29.postimg.org/fi15mfn8n/nib.png
这些单元格被加载到我项目中其他位置的UITableView
,而UIViewController
位于date
。 (我将单元组笔尖与它们加载的视图分开的原因是为了保持简单的可自定义性,因为这个表视图需要包含不同的单元格,具体取决于用户之前选择的选项。)
这些属性(例如UIViewController
属性)由UIViewController
保留。点击步进器后,date
通过我已实施的委托系统更新其UIViewController
属性。
问题:
我的问题是将属性从{{1}}退回到自定义单元格中的标签出口。我怎么能这样做?
答案 0 :(得分:0)
假设步进器和滑块仅更改同一单元格内标签的值,我会在自定义单元格类中管理它,然后用委托更新UIViewController
。特别是如果你想实时更改标签的价值,这是最简单的方法。
我通常会在滑块(或其他控件)编辑完成后将委托调用发送回父UIViewController
,如下:
- (void) cellDidChangeValue:(int)value;
答案 1 :(得分:0)
对于任何尝试类似的东西(多个视图和tableviewcells传递数据),我决定使用Singleton。它是托管数据的独立类实例,可由任何其他类访问和修改:
DataSingleton.h
#import <Foundation/Foundation.h>
@interface DataSingleton : NSObject
+(instancetype) sharedInstance;
@property (strong, nonatomic) NSDate *dataItem1;
@property (strong, nonatomic) NSNumber *dataItem2;
@property (strong, nonatomic) NSNumber *dataItem3;
@end
DataSingleton.m
#import "DataSingleton.h"
@implementation DataSingleton
// Singleton boilerplate
+(instancetype) sharedInstance
{
static DataSingleton *instance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[self alloc] init];
});
return instance;
}
@end
然后任何其他类都可以访问和修改此单实例数据集,如下所示
NSDate *date = [DataSingleton sharedInstance].dataItem1
希望这可以帮助其他人玩“全球”数据。