簡體   English   中英

iPhone子類化視圖控制器和IBOutlet UITableView

[英]iPhone Subclassing view controller and IBOutlet UITableView

我有以下問題。 我已經像上面創建了一個ViewController

@interface MyViewController : UIViewController {
    IBOutlet UITableView *myTableView;
}

@property (nonatomic, retain) IBOutlet UITableView *myTableView;

我已經將接口生成器上的myTableView鏈接到匹配的筆尖的UITableView。 並且我將MyViewController子類化為創建YourViewController,如下所示:

@interface YourViewController : MyViewController {

}

然后從TabBarController加載選項卡項上的YourViewController。 盡管我可以看到MyViewController確實在最后被調用,但是模擬器上沒有顯示表視圖。

我嘗試調試MyViewController,但IBOutlet似乎為零。

這是為什么?

我在繼承和IBOutlets和IBAction中遇到了主要問題。 我建議您避免這種情況,並以另一種方式創建共享的東西。

例如,當我收到內存警告時,我就被錯誤打了很多。 在基類與派生類中定義插座和操作時,它們未正確重新連接。

可能根本沒有加載MyViewController的nib文件。 您是否為YourViewController使用了特定的nib文件? 以及您以哪種方式創建YourViewController。

您還可以嘗試在YourViewController中定義“ awakeFromNib”方法,然后從中調用[super awakeFromNib]嗎?

但是,要了解您的問題,您必須清楚地說明如何加載對象以及是否以及在何處使用Nibs?

如果使用代碼動態添加它,則只有它能起作用。 不使用筆尖。

UITableView (即myTableView)需要數據源及其控件的委托。 並且您的控制器需要一個鏈接到xib中的Table視圖。

  1. 在控制器的接口部分聲明表委托協議。

  2. 使用IB,將xib中的TableView鏈接到所有者文件:代理。

  3. 使用IB,將文件所有者myTableView鏈接到xib中的tableView。

希望對您有所幫助。

假設您在MainWindow.xib中擁有整個導航堆棧

  • 打開MainWindow.xib
  • 選擇YourViewController(或調用UITableViewController的子類的任何控制器)
  • 選擇屬性檢查器
  • 確保“ NIB名稱”屬性已選擇了正確的YourViewController(或其他名稱)

我遇到了同樣的問題,這為我解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM