2012-03-18 86 views
2

我想將一個tableView放在UIViewController中,因爲我需要一個工具欄在視圖的頂部,因此我無法使用tableViewController。我創建了一個tableView類,把我認爲是它所需要的功能,但我必須錯過某些東西,或者在某處放錯了某些東西。UIViewController裏面的TableView

.H

import <UIKit/UIKit.h> 

@interface TestTV : UITableView 
@property(strong,nonatomic)NSArray *arr; 

@end 

.M

#import "TestTV.h" 

@implementation TestTV 
@synthesize arr = _arr; 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 

    _arr = [[NSArray alloc]initWithObjects:@"HEJ",@"FOO", nil]; 
    return _arr.count; 
} 

- (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]; 
    } 

    NSString *cellValue = [_arr objectAtIndex:indexPath.row]; 
    cell.textLabel.text = cellValue; 

    return cell; 
} 
@end 

回答

6

你可能不想繼承UITableView。取而代之的是,在您的視圖控制器子類,聲明你的意圖來實現相應的委託和數據源協議:

@interface MyViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> 

然後,在您的視圖控制器的實現文件,實現您在上面定義的方法。

最後,在界面生成器(或編程)設置表視圖的delegatedataSource出口等於其超視圖的視圖控制器(在IB中,此視圖控制器是文件的所有者)。

您也可以使數據數組成爲視圖控制器的屬性。

+0

工作!非常感謝你:) – 2012-03-18 23:18:50

+0

現在,我無法從tableView中的單元格或從我的工具欄中的任何按鈕中繼續遊戲。 – 2012-03-19 11:06:39

+0

如果你正在談論故事板遊戲,我對它們並不熟悉。另一方面,當然你可以使用'IBAction's和'tableView:didSelectRowAtIndexPath:'委託方法來實現你想要的任何東西。 – warrenm 2012-03-19 13:52:03

相關問題