-1
我有一個擁有約50個視圖的iOS應用程序。我想在用戶訪問的每個第5個屏幕後執行一些操作。我知道我可以創建一種全局計數器變量,並在每個視圖的viewDidLoad上更新它,如果count爲5,那麼執行該操作並重置該計數器變量。有沒有更好,更有效的方法呢?同樣展望一下,如果我需要改變某些東西,我寧願在一個文件中做所有的觀點。真的很感激這方面的一些投入。在iOS應用程序中統計訪問次數的有效方法
我有一個擁有約50個視圖的iOS應用程序。我想在用戶訪問的每個第5個屏幕後執行一些操作。我知道我可以創建一種全局計數器變量,並在每個視圖的viewDidLoad上更新它,如果count爲5,那麼執行該操作並重置該計數器變量。有沒有更好,更有效的方法呢?同樣展望一下,如果我需要改變某些東西,我寧願在一個文件中做所有的觀點。真的很感激這方面的一些投入。在iOS應用程序中統計訪問次數的有效方法
我會創建一個單例類來跟蹤您的計數器邏輯,爲您的所有視圖控制器創建一個基類,然後在基類的viewDidLoad中對您的計數器單例進行調用。
我覺得這樣的事情會爲你工作:
@interface ViewCountManager()
@property(nonatomic) NSInteger viewCount;
@end
@implementation ViewCountManager
#define kOperateOnCount 5
+(ViewCountManager *)viewCountManager
{
static ViewCountManager *viewCountManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
viewCountManager = [[self alloc] init];
});
return viewCountManager;
}
-(BOOL)shouldPerformOperation
{
BOOL retValue = NO;
if(self.viewCount == kOperateOnCount - 1)
{
retValue = YES;
self.viewCount = 0;
}
else
{
self.viewCount++;
}
return retValue;
}
@end
@implementation CountedViewController
-(void)viewDidLoad:(BOOL)animated
{
[super viewDidLoad:animated];
BOOL shouldPerform = [[ViewCountManager viewCountManager] shouldPerformOperation];
[self performOperation];
}
@end
視圖或視圖控制器?如果它是視圖控制器,您是否使用導航控制器並推入segues?它們是否都來自相同的視圖控制器類(例如'UIViewController')? –
我使用xibs而不是故事板。是的,我的意思是視圖控制器,它們都來自UIViewController。謝謝。 –