2012-04-18 29 views
1

我創建了這樣的改變的tableview的大小編程

@interface RootViewController : UITableViewController{ 

} 

現在我想顯示前更改的tableview的起源&尺寸表視圖。

我該如何改變它?

編輯:

- (id) initWithCoder:(NSCoder *)aDecoder 
{ 
    self = [super initWithStyle:UITableViewStyleGrouped]; 
    self.tableView.frame=CGRectMake(50, 210, self.view.frame.size.width, self.view.frame.size.height); 
    return self; 
} 

現在的問題我面臨被我已成立下面的代碼。現在表視圖仍然從我的視圖控制器(0,0)的頂部位置示出不根據我的X,但是如果我將風格改變爲組或平原,它只會正確地發生。

回答

3

你可能只獲得屬性* 的tableView *做到這一點

tableView.frame = xxxxxx; 

,但我認爲你只需要一個UIViewController包含一個UITableView

UITableView tableView = [[UITableView alloc] initWithFrame:(**the size you want**)]; 
[self.view addSubView:tableView]; 
+0

我面臨以下代碼self.tableView是我所設置的問題= [[UITableView的頁頭] initWithFrame:方法CGRectMake(0,310,self.view.frame.size.width,200)樣式:UITableViewStyleGrouped] ;現在表視圖仍然從我的視圖控制器(0,0)的頂部位置顯示,而不是根據我的x,y位置。但是,如果我將樣式更改爲組或純文本,它只會正常發生 – user1227928 2012-04-18 15:04:49

+0

我認爲您可以採取第二種方式,使用一個UIViewController包含一個UITableView,它沒有區別 – adali 2012-04-18 15:10:45

+0

不,我只能按照這種方式 – user1227928 2012-04-18 15:32:19

6

看起來你已經創建了一個新的tableView,而不是嘗試移動InterfaceBuilder爲您創建的現有一個。但是由於您沒有將新的tableView添加到視圖層次結構中,因此您看不到新的視圖層次結構,並且您還沒有移除原來的一個...

相反,只需移動原始tableView即可。在您的rootViewControllerviewWillAppear:方法,做到以下幾點:

-(void)viewWillAppear:(BOOL)animated 
{ 
    self.tableView.frame = CGRectMake(0, 310, self.view.frame.size.width,200); 
} 
+0

仍然沒有變化 – user1227928 2012-04-18 15:31:31

+0

超類實現中的東西正在改變tableView的框架後的viewDidLoad方法。您必須將其設置在viewWillAppear中。我已經相應地更改了答案 - 請嘗試此操作並接受答案。 – ikuramedia 2012-04-18 15:48:11

+0

仍然沒有成功,目前我正在使用MGSplitViewController框架,我試圖改變左側面板表視圖屏幕的x,y座標的位置,並且我正在iOS5模擬器中測試它。 – user1227928 2012-04-19 07:41:35

1

如果你使用故事板,如果你有約束成立。 reloadData將重置您設置幀的任何內容。相反,你應該修改約束條件。你可以通過創建一個插座然後改變常量來做到這一點。例如,下面我將約束變量鏈接到頂部約束,並通過將常量設置爲-60,將其移動。

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *tableConstraint; 

_tableConstraint.constant = -60.;