2012-06-18 44 views
0

我在顯示UITableView的應用程序中創建了一個視圖。幾乎所有的時間都會顯示結果(顯然),但是當它沒有任何結果時,我想顯示另一個視圖,告訴用戶他/她如何填充表格。在Interfacebuilder中創建自定義視圖並使用代碼

我想在interfacebuilder中設計該視圖。我將不得不在代碼中檢查數據源是否爲空或在兩個不同的nib之間切換。如何實例化和配置在Interfacebuilder中製作的視圖?

+0

請檢查這一個 [UIView和initWithFrame和一個NIB文件。我怎樣才能加載NIB文件] [1] [1]:http://stackoverflow.com/questions/5056219/uiview-and-initwithframe-and-a-nib-file-how - 可以-I-得到最筆尖文件加載 – dianz

回答

0

最簡單的方法是通過在xib中正常添加視圖並使其可見 設計您的兩個視圖,表視圖和其他視圖,例如給tableView一個標記111,並給另一個視圖另一個視圖標籤222例如現在

viewDidLoad

同時獲得意見

UIView *noDataView = [self.view viewWithTag:222]; 
UITableView *tableView = [self.view viewWithTag:111]; 
//Hide both of them or only the noDataView until you know if you have data from the dataSource or not 

檢查您的數據源

//hasElements do you have any element to show? 
if(hasElements) 
{ 
    noDatView.hidden = YES; 
    tableView.hidden = NO; 
} 
else 
{ 
    noDatView.hidden = NO; 
    tableView.hidden = YES; 
} 
0

可以按如下方式加載基於condition.You可以寫類別筆尖文件:

self.view = (UIView *)[self loadNib:@"SecondView" inPlaceholder:self.view]; 

- (UIView *)viewFromNib:(NSString *)nibName 
{ 
    NSArray *xib = [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil]; 
    for (id view in xib) { // have to iterate; index varies 
     if ([view isKindOfClass:[UIView class]]) return view; 
    } 
    return nil; 
} 

- (UIView *)loadNib:(NSString *)nibName inPlaceholder:(UIView *)placeholder 
{ 
    UIView *nibView = [self viewFromNib:nibName]; 
    [nibView setFrame:placeholder.frame]; 
    self.view = nibView; 
    //[self.view insertSubview:nibView aboveSubview:placeholder]; 
    //[placeholder removeFromSuperview]; 
    return nibView; 
} 
0

其他的答案給你一個可能的技術解決方案,但我建議,如果你使用的是標準的蘋果設計指南,你可能甚至不需要擔心它。例如,在屏幕上的某個位置,您應該有一個帶有標識符「添加」(顯示加號圖標)的酒吧按鈕項目。然後,不要給出如何添加項目的很長(通常很差的本地化)說明,只需爲空白部分標題爲「沒有項目」,用任何複數名詞替換項目都適合您的表格項目。例如,對於一個射箭相關的應用我的工作:

Empty Table View with obvious bar button items

通知的編輯按鈕當前如何禁用過,因此不需要解釋,因爲他們可以在這一點上做的唯一的事情就是挖掘添加按鈕(Appstore上的屏幕截圖將顯示他們在這一點之後可以看到的內容)。