2010-08-02 69 views
0

我想在單個UIView上放2個TableViews。我已經實現了所需的方法。我已經用斷點測試了應用程序,並且此方法失敗。多個UITableView在單個UIView

我有2個tableviews:radios_tv和presets_tv 從其中獲得計數委託兩個數組:array_radios和array_presets array_radios包含10個元素。 array_presets包含30個元素。

我測試過的部分:

if (tableView == self.presets_tv) { 
    return appDelegate.array_presets.count; //Contains 30 elements in the array_radios 
} 

一切都OK了,如果我把返回低於10任何東西,但這個項目失敗了SIGABRT錯誤,如果回報率是大於10,在我的情況下,因爲array_presets包含30個元素,所以失敗。

下面是我的代碼:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
// Return the number of rows in the section. 
MyApplicationAppDelegate *appDelegate = (MyApplicationAppDelegate *)[[UIApplication sharedApplication] delegate]; 

if (tableView == self.radios_tv){ 
    return appDelegate.array_radios.count; //Contains 10 elements in the array_radios 
} 

if (tableView == self.presets_tv) { 
    return appDelegate.array_presets.count; //Contains 30 elements in the array_radios 
} 
} 

這是我cellForAtRowIndex

// Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
} 

// Configure the cell... 
// Set up the cell 
MyAppAppDelegate *appDelegate = (MyAppAppDelegate *)[[UIApplication sharedApplication] delegate]; 
if (tableView == radios_tv) { //radio_tv is an IBOutleet UITableView 
    sqlClass *aRadio = (sqlClass *)[appDelegate.array_radios objectAtIndex:indexPath.row]; 
    [cell setText:aRadio.r_name]; 
    return cell; 
} 
    if (tableView == presets_tv) { //preset_tv is an IBOutlet UITableView 

    } 

} 

你能幫我請。

+0

您能否顯示您的「cellForRowAtIndexPath」方法? – 2010-08-02 10:49:44

+0

它可能不會影響它,但請嘗試使用「return [[appDelegate.array_presets] count];」。 – 2010-08-02 10:50:43

+0

這不起作用詹姆斯,多虧了...... – awlcs 2010-08-02 14:11:37

回答

2

我希望我在這裏沒有誤解你,但是。

爲什麼不爲每個UITableView指定一個不同的委託?我假設你在使用「radios_tv.delegate = self」時也使用「presets_tv.delegate = self」。

您必須使用不同的實際委託對象。也許你可以從NSObject創建一個符合UITableViewProtocol的新類,在你的視圖控制器中實例化它們,並在創建表視圖時分別將它們分配爲委託。

+0

不,我不使用「radios_tv.delegate = self」或「presets_tv.delegate = self」。其實我不知道這是什麼意思。我是一個新手:p – awlcs 2010-08-02 14:20:14

+0

他說的是你應該創建兩個新類(它們是常規的NSObject類),然後將其中一個設置爲表視圖的代表,另一個是代表其他。 – Kalle 2010-08-02 17:15:28

相關問題