我遇到以下問題:我想使用UITableView的單個單元作爲另一個UITableView的標題視圖。第二個表視圖又是一個從不同的UITableView類繼承的對象,因爲它完全共享它的功能。事實上唯一的區別是第二個UITableView有一個標題視圖(應該是單細胞UITableView)。UITableView作爲tableHeaderView的另一個UITableView
與頭部的UITableView的接口看起來像:
#import <UIKit/UIKit.h>
#import "ScheduleDetailsController.h"
@interface TodayDetailsViewController : ScheduleDetailsController <UITableViewDelegate, UITableViewDataSource> {
UITableView *headerView;
}
@property (nonatomic, retain) UITableView *headerView;
@end
而像執行:
#import "TodayDetailsViewController.h"
@implementation TodayDetailsViewController
@synthesize headerView;
- (void)loadView {
[super loadView];
self.headerView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
self.headerView.backgroundColor = [UIColor clearColor];
self.headerView.opaque = NO;
self.headerView.delegate = self;
self.headerView.dataSource = self;
// This is a UITableView defined as a property in the parent class
self.scheduleDetailsTable.tableHeaderView = self.headerView;
}
...
#pragma mark -
#pragma mark Table View Data Source Methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if (tableView == self.scheduleDetailsTable.tableHeaderView)
return 1;
else
return [self.scheduleDetailsTable numberOfSections];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (tableView == self.scheduleDetailsTable.tableHeaderView)
return 1;
else
return [self.scheduleDetailsTable numberOfRowsInSection:section];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView == self.scheduleDetailsTable.tableHeaderView) {
...
return cell;
} else
return [self.scheduleDetailsTable cellForRowAtIndexPath:indexPath];
}
@end
我沒有得到任何錯誤,當我編譯和運行這個,後來我也不要什麼都看不到,即視圖保持空白。我也嘗試用UIView替換標題視圖,然後一切按預期工作(即父類中的表視圖正確實現)。我可能只是錯過了一些顯而易見的東西,但我現在無法弄清楚。如果有人能夠發現錯誤或者可以提供一些建議,我會非常感謝。
感謝您的回覆。實際上,你給出的單個UITableViewCell選項確實是最好的選擇。但是,唯一的問題是,當這個單元格被選中(或者可能存在?)時,似乎不可能觸發某個操作(即推送新視圖)。另外,您給出的第二個選項對於我的情況並不適合,因爲頂部單元格需要是普通單元格,而底部表格視圖樣式需要分組。 – MJD 2011-03-25 07:59:25
只是想到了自己......將UIButton作爲子視圖添加到單個UITableViewCell中以便能夠觸發某些操作是否是個好主意? – MJD 2011-03-25 08:06:37
@MJD很高興你解決了你的問題。 FWIW,在整個表格視圖單元格中放置一個按鈕並跟蹤點擊可能是可以的。如果您在選擇單元格以匹配普通表格視圖時想要使用hilight,則必須自己調用[tableViewCell setSelected:YES animated:NO]以匹配預期的行爲。 (由於某些原因,當你在表格視圖中選擇一個單元格時,操作系統不會使用內置的分析...) 但是,它確實開始有點黑客 - 你可能會更好如果你需要兩種不同的風格,請按照你的方式做... – peterjb 2011-03-26 02:43:35