[英]In iOS , Why will viewWithTag method return nil?
我有一個由Storyboard構建的tableview。
表格視圖的類型為“ 靜態”和“分組”
在它的一個Cell中,我有一個帶開關的單元(在Storyboard中設置為ON )。
我通過Storyboard將開關的標簽設置為10000816。
我嘗試使用[self.tableview viewWithTag 10000816]在tableview的控制器中獲取開關。 失敗了
好。 然后,我嘗試首先獲取Cell並嘗試[cell viewWithTag],以某種方式,它成功了。
然后我想知道為什么。
所以我只留下了下面的注釋。
UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
跟隨者
UISwitch* switchButton = [self.tableView viewWithTag: 10000816];
[switchButton setOn:NO animated:YES];
OK,這次,再次成功。
我評論了與我無關的Get-Cell系列。
然后發生了奇怪的事情。失敗了。 我所做的唯一更改只是一條無關緊要的路線。 這么奇怪。
如果我只注釋Get-Cell行,為什么viewWithTag返回nil?
- (void) switchOff{
//****** the line below is the magic Get-Cell line , if I comment this line , viewWithTag will return nil
UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
UISwitch* switchButton = [self.tableView viewWithTag: 10000816];
[switchButton setOn:NO animated:YES];
}
[更新]
我的switchOff在-(void)viewDidAppear中被調用:
- (void)viewDidAppear:(BOOL)animated{
[self switchOff]
}
如果您的表視圖是一個原型(其值將由cellForRowAtIndexPath
方法填充),然后將一個單元格放到表視圖中,您將不會看到該單元格,因為該單元格尚未創建,因此它的內容也沒有創建。
如果您的表格視圖是靜態的,則只有這樣,才會顯示單元格的情節提要的內容,並且您將獲得帶有該標記的單元格內的控件。
我認為您的tableview是一個原型,並且由於未創建單元格,因此您的[self.tableview viewWithTag 10000816]
返回nil,因為尚未創建該控件。
希望可以讓你理解
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.