2010-07-28 90 views
2

我的應用程序在每個頁面中都有一個帶有tableView的分頁滾動視圖。在屏幕的底部,我放置了一個廣告橫幅,當廣告不可用時它應該隱藏起來,並在加載時重新出現。此橫幅放置在scrollView下方,不受用戶左右滾動頁面或上下滾動表格的影響。當調整框架大小時,UIScrollView/UITableView崩潰

所以我調整是隨時滾動視圖的東西需要的是這樣的:

NSInteger offset = -50; 
if (self.bannerIsVisible) offset = 50; 
CGRect frame = scrollView.frame; 
frame.size.height += offset; 
scrollView.contentSize = CGSizeMake(frame.size.width * pages, frame.size.height); 
scrollView.frame = frame; 

最後一行是造成我的問題。有時候一切正常,它可以完美調整scrollView及其內容。其他時候,它這個崩潰控制檯:

2010-07-27 10:25:31.779 MyAPP[8026:207] -[__NSArrayM tableView:cellForRowAtIndexPath:]: unrecognized selector sent to instance 0x736eb20 
2010-07-27 10:25:31.781 MyAPP[8026:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM tableView:cellForRowAtIndexPath:]: unrecognized selector sent to instance 0x736eb20' 
*** Call stack at first throw: 
(
    0 CoreFoundation     0x026cb919 __exceptionPreprocess + 185 
    1 libobjc.A.dylib    0x028195de objc_exception_throw + 47 
    2 CoreFoundation     0x026cd42b -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 
    3 CoreFoundation     0x0263d116 ___forwarding___ + 966 
    4 CoreFoundation     0x0263ccd2 _CF_forwarding_prep_0 + 50 
    5 UIKit       0x003a3a3f -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 619 
    6 UIKit       0x00399ad2 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:] + 75 
    7 UIKit       0x003ae40c -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1561 
    8 UIKit       0x003a60d7 -[UITableView(_UITableViewPrivate) _setNeedsVisibleCellsUpdate:withFrames:] + 372 
    9 UIKit       0x003a37cd -[UITableView setFrame:] + 266 
    10 UIKit       0x00367ae8 -[UIView(Geometry) resizeWithOldSuperviewSize:] + 385 
    11 UIKit       0x0036ba2b -[UIView(Geometry) resizeSubviewsWithOldSize:] + 273 
    12 UIKit       0x00367f79 -[UIView(Geometry) setFrame:] + 497 
    13 UIKit       0x0038085f -[UIScrollView setFrame:] + 617 
    14 MyAPP       0x0000a678 -[MyViewController toggleBanner] + 893 

這究竟是爲什麼,爲什麼只是有時?更重要的是,我怎樣才能可靠地改變我的scrollView的大小?

+0

您是否嘗試過逐步調試表格cellForRowAtIndexPath方法?從我的角度來看,這種方法似乎有一個無效的呼叫。不是100%確定艱難。 – samsam 2010-07-28 14:30:02

回答

2

看起來非常像您的表視圖的數據源被釋放的對象,因此委託方法被髮送到不同的對象。這是一個內存管理問題,所以你可以嘗試使用殭屍工具運行你的應用程序,看看它是否會發現問題。

相關問題