我已經創建了一個包含3個UILabels
和一個UIImageView
的自定義UITableViewCell
。我通過故事板設置它,並且有一個UITableView
類連接到表格單元格。在那個類中,我想要處理不同的UI對象,並且可以選擇從我的視圖控制器傳入信息。UITableViewCell正在加載填充內容而不是編程輸入?
這裏是我的表格單元格視圖類
@property (retain, nonatomic) IBOutlet GBPathImageView *ProfileThumbnailImageView;
@property (weak, nonatomic) IBOutlet UILabel *profileDisplayNameLabel;
@property (weak, nonatomic) IBOutlet UILabel *profileUniversityNameLabel;
@property (weak, nonatomic) IBOutlet UILabel *profileNumberOfStringsLabel;
@property (strong, nonatomic) NSString *profileDisplayName;
@property (strong, nonatomic) UIImage *profileThumbnailImage;
@property (strong, nonatomic) NSString *profileUniversityName;
@property (nonatomic) NSUInteger profileNumberOfStrings;
- (id)initWithProfileImage:(UIImage *)profileImage
displayName:(NSString *)displayName
universityName:(NSString *)universityName
numberOfUserStrings:(NSUInteger)numberOfStrings;
的.H正如你可以看到我有所有的故事板對象都連接到一個屬性插座。我還擁有每件必要信息的屬性。在我的視圖控制器
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
方法,我想實例化,我傳遞信息這個自定義單元格。我想用正確的信息設置信息的屬性,讓它可以在視圖類設置。
這就是前面提到的方法中的代碼:
static NSString *cellIdentifier = @"UserProfileCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if ([cell isKindOfClass:[StringrUserTableViewCell class]]) {
StringrUserTableViewCell * userProfileCell = (StringrUserTableViewCell *)cell;
userProfileCell.profileDisplayName = @"Alonso Holmes";
//userProfileCell.profileDisplayNameLabel.text = @"User Name";
}
我有兩行有,一個是設置信息屬性的名稱,而且我已經在視圖中的.m文件來設定其文本到該屬性名稱。發生的問題是profileDisplayName
屬性在嘗試設置UILabels
文本時爲空。我怎樣才能一次設置這些信息,以便在單元格加載之前或初次加載時它會在那裏?您也可以看到註釋掉的一行,我直接在那裏設置UILabel
的文字。我寧願不這樣做,因爲我想把抽象/邏輯留給視圖的類。我設置的圖像視圖是自定義的,因此需要更多的代碼。
你確定cell不是null嗎? – chancyWu
該單元格絕對不是null。我設置了一個測試,以便點擊一個單元格並轉到新頁面。我將信息傳遞給新的頁面,這恰好是信息持有屬性。新頁面正確顯示信息。看來,UILabels和UIImageView在信息持有屬性獲取信息之前加載到屏幕上。這就是UI對象加載空白的原因。我需要以某種方式在屏幕上載入信息之前將信息提供給他們。 – Jonathan
如果您在cellForRowAtIndexPath方法中正確設置了單元格,它們應該一起加載 – chancyWu