2011-10-04 54 views

回答

0
NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"FooView" 
              owner:self options:nil]; 
[self.view addSubview:[array objectAtIndex:0]]; 

在大多數情況下,你可能會想第一個(只?)頂層的XIB對象,但有可能是,你會想在廈門國際銀行引用不同的事情的情況。

這就是我們加載UITableViewCells的典型例子。這裏的細微變化是設置和使用插座並將XIB中的第一個物品直接裝入插座。

[[[NSBundle mainBundle] loadNibNamed:@"FubarView" owner:self options: nil] objectAtIndex:0]; 
[self.view addSubview:self.fubarViewOutlet]; 

無論方法你選擇做它,你將它添加到父視圖後,正好被設置爲指定大小和位置的框架。無論是使用插座還是將陣列中的項目轉換爲適當的類別並像使用其他視圖一樣使用它。

編輯:從您的評論請求,我會寫這樣的事情。

- (void)tableView:(UITableView *)tableViewTemp didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if(indexPath.row==0){ 
    NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"CNBViewController" 
             owner:self options:nil]; 
    self.selectedRowView = [array objectAtIndex:0]; // assumes a class variable selectedRowView 
    [self.view selectedRowView]; 
    // newView.frame = CGRectMake(........); 
    } 
} 
+0

我嘗試此代碼,但我不知道如何在我的應用程序中設置此。你可以幫我嗎? 我的意思是在ipad屏幕的前半部分,我希望表格視圖和它的didselectObjectAtIndex:0我希望在下半部分顯示細節視圖。 –

+0

爲此,我建議使用XIB創建一個UIViewController(只需在創建UIViewController時勾選)。然後進入XIB,並創建可能覆蓋屏幕一半的桌子。 從那裏添加你的UITableView委託/數據源。在didSelectRowAtIndexPath中:插入加載第二個XIB的代碼。執行addSubview:將新加載的視圖(從第二個XIB)添加到主要XIB中。一定要設置新的XIB的框架,因爲尺寸可能是0,0(所以你將無法看到它) – DBD

+0

這是我已經使用的代碼,但它完全帶我到另一頁 - (無效)的tableView:(UITableView的*)tableViewTemp didSelectRowAtIndexPath方法:(NSIndexPath *)indexPath { 如果(indexPath.row == 0){ self.title = @ 「創建新手冊」; CNBViewController * xib1 = [[CNBViewController alloc] initWithNibName:@「CNBViewController」bundle:nil]; // [self.view removeFromSuperview]; [self.navigationController pushViewController:xib1 animated:YES]; [xib1 release]; } 你能幫助我通過它可以加載另一個xib在同一頁上的代碼。 –

相關問題