2014-08-29 20 views
0

語境:想自定義單元格更新的出口,利用其委託的數據

我把東西一起輕微曲。

我有一個設計在單個XIB文件中的自定義表格單元格的選擇,每個屬於MyCustomCell類。這些單元包含標籤出口,以及步進器和滑塊等讓用戶更改驅動出口的屬性的東西。 實施例細胞:http://s29.postimg.org/fi15mfn8n/nib.png

這些細胞被加載到UITableView別處在我的項目,而這又坐落在一個UIViewController。 (我將細胞尖端與它們加載到的視圖分離的原因是爲了保持易於定製,因爲根據用戶先前選擇的選項,此表視圖需要包含不同的單元。)

這些屬性(例如date財產)由UIViewController持有。當輕觸步進器時,UIViewController通過我已實施的代表系統更新其date屬性。

問題:那麼

我的問題越來越屬性背出UIViewController,進入自定義細胞的標記網點。我怎樣才能做到這一點?

+0

我簡化了這個問題,專注於最重要的位 – 2014-08-29 15:59:22

回答

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 

希望這有助於其他人都在玩'全球'數據。

0

假設步進器和滑塊只改變同一單元格中標籤的值,我會在自定義單元類中管理它,然後用委託更新UIViewController。特別是如果您想要實時更改標籤的值,這是最簡單的方法。

我通常然後發送一個委託調用回父UIViewController滑塊(或其他控件)已完成被編輯後,吸爲:

- (void) cellDidChangeValue:(int)value; 
+0

嘿,聽起來像是一個很好的解決方案。想知道是否有辦法在VC中保留儘可能多的代碼,但是如果沒有通過,那麼我會去解決這個問題。再次感謝 – 2014-08-29 21:01:48

+0

啊,回想起來,我剛剛意識到這適用於某些細胞,但不是全部。例如,某些單元格會觸發另一個控制器的繼續,然後設置一個值並需要在自定義單元格的出口中反映出來。複雜... – 2014-08-29 21:22:36

+0

我可以使自定義單元類成爲視圖控制器的代表嗎?或者這會導致循環問題? – 2014-08-29 21:29:09

相關問題