2013-03-29 16 views
0

我做這個簡單的程序:如何製作UITableView重新制作您製作的類別?

-(void) vPrintAllSubviews 
{ 
    [self printAllSubviewsWithDepth:0]; 
    while (false); 
} 

-(void) printAllSubviewsWithDepth:(NSUInteger) depth 
{ 
    UIView * theView= self; 
    [@"" stringByPaddingToLength:depth withString: @"abc" startingAtIndex:0]; 
    NSString * result =[NSString stringWithFormat:@"%@%@",[@"" stringByPaddingToLength:depth withString: @" " startingAtIndex:0], theView]; 
    PO(result); 
    NSArray * subViews = self.subviews; 

    for (UIView * subView in subViews) { 
     [subView printAllSubviewsWithDepth:depth +1]; 
    } 
} 

當我打電話,我得到:

-[UITableView vPrintAllSubviews]: unrecognized selector sent to instance 0x1faa8c00 

但UITableView的是的UIView的子類,該類別適用於所有的UIView。事實上,這個類別在以前更復雜的項目中工作得很好。

那麼,爲什麼UITableView不知道它可以訪問vPrintAllSubviews?

它甚至沒有包含任何編譯錯誤。

如果我看構建階段,我看到這張圖片暗示只有3個文件正在編譯。嗯......在我上一個項目中,我不記得需要添加.m文件來編譯列表。

enter image description here

+0

你確定,你導入它,它可用於uiview? –

+0

是的。實際上,這是自動完成功能可以幫助我鍵入選擇器。 –

+1

@AnoopVaidya實現不在標題中,導入它們不相關。我懷疑它就是缺少的'-ObjC -load_all'鏈接器標誌。 – 2013-03-29 07:25:01

回答

1

你必須包括你的執行文件,構建目標。

可能是您從另一個項目中複製了資源,並且您忘記在導入對話框中選中對勾Add to Target

+0

+1聽起來不錯。 –

+0

我做到了。哦,我應該添加目標?好的。 –

+0

您在目標的「編譯源代碼」中看到的文件是唯一被鏈接的文件。如果你沒有你的類別,它在運行時將不可用。 –