簡體   English   中英

iPhone-未設置NSString值

[英]iPhone - NSString value not being set

在UIViewController內部,我正在執行以下操作:


TVController* stopTimes = [ [ TVController alloc ] initWithStyle: UITableViewStyleGrouped ];
stopTimes.tableView.frame = CGRectMake( 0, 180, 320, 280 );
stopTimes.tableView.backgroundColor = [ UIColor whiteColor ];
stopTimes.theID = stopID;
[ self.view addSubview: stopTimes.tableView ];

其中TVController是UITableViewController。

在TVController類內部,我有一個名為theID的NSString屬性,該屬性已合成。 在執行上面的“ stopTimes.theID = stopID”時,我沒有收到任何錯誤,並且TableView按預期顯示。

在此TVController類的'viewDidLoad'中,我只是嘗試嘗試NSLog'theID'以顯示其有效,但是無論我做什么,它都是(null)。

但是,我嘗試將單元格的文本設置為“ theID”,並且效果很好。

那么,為什么在設置單元格時正確設置了“ theID”,而在viewDidLoad中卻未正確設置?

加載視圖后,無論是從NIB還是在loadView的實現中,都會立即調用viewDidLoad。 該視圖是在第一次訪問視圖控制器的view屬性時加載的,而不是在分配視圖控制器時或在以后的某個時間加載。

這意味着在第二行中第一次調用loadView(如果有的話,默認實現是加載NIB),然后是viewDidLoad,這是因為您正在訪問視圖控制器的tableView屬性,並且當然發生在您之前實際上為視圖控制器的theID屬性設置一個值。 當然,在加載表內容時(除非實際在其他地方調用-reloadContent,否則直到表視圖實際出現時才會發生),您的theID屬性已設置。

您可以非常簡單地通過在調試器中設置兩個斷點來測試自己-斷點位於代碼段的第三行上方(設置theID屬性的位置),另一個斷點位於viewDidLoad的NSLog()調用中。 您將看到后一個斷點首先被觸發。

PS歡迎使用堆棧溢出! 不要忘記閱讀FAQ,並為您的問題標記接受的答案(當然,如果它們是值得接受的好答案)。

暫無
暫無

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

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