2012-05-08 32 views
1

Xcode 4.3/iOS 5.1/Storyboards。無法將UITableView作爲子視圖

我有一個UITableView一個UIViewController在故事板

初始化該視圖

-(void) loadView { 

     UITableView *tTableView = [[UITableView alloc] initWithFrame:CGRectMake(20,60, 300, 300) 
                   style:UITableViewStyleGrouped]; 
     [tTableView setDelegate:self]; 
     [tTableView setDataSource:self]; 
     [tTableView setBackgroundView:[[UIView alloc] initWithFrame:self.tableView.bounds]]; 
     self.tableView = tTableView; 
     self.view = tTableView; // <--- THIS WORKS 
} 

這工作時,但TableView中被拉伸在屏幕的整個寬度。我希望它具有一定的尺寸,因爲我使用它來進行登錄用戶名/密碼控制。

我被告知將其添加爲子視圖,但這會使我的應用程序以某種遞歸調用的方式崩潰到同一個「loadView」方法中。

-(void) loadView { 

    UITableView *tTableView = [[UITableView alloc] initWithFrame:CGRectMake(20,60, 300, 300) 
                  style:UITableViewStyleGrouped]; 
    [tTableView setDelegate:self]; 
    [tTableView setDataSource:self]; 
    [tTableView setBackgroundView:[[UIView alloc] initWithFrame:self.tableView.bounds]]; 
    self.tableView = tTableView; 
    [self.view. addSubview: tTableView]; // <-- THIS CRASHES 

} 

這是爲什麼會崩潰?我怎樣才能將UITableView添加到子視圖中,我可以控制它的寬度並且不佔用整個屏幕寬度?

+0

self.view之後的點是什麼? (在[self.view。addSubview:tTableView];) – Geoffroy

+0

是的。在這裏輸入/編輯時,我一定是錯誤地添加了它。 – JasonGenX

回答

3

您需要self.view = tTableViewself.view = [UIView alloc] initWithFrame....然後添加表格視圖。覆蓋loadView方法意味着您要創建self.view。因此,爲你的情況,創建一個UIView,將其設置爲self.view,然後添加您的tableview作爲子視圖self.view

0

您使用loadView方法,這意味着您自己定義視圖。 所以self.view沒有被定義,並且控制器抱怨它的視圖在它自己應該顯示時沒有被定義。

要麼將​​你的接口放在一個xib(或storyboard)中,並將這些值綁定在viewDidLoad中,或者在loadView中手動實例化self.view。

相關問題