2013-08-02 16 views
-1

我有一個擁有約50個視圖的iOS應用程序。我想在用戶訪問的每個第5個屏幕後執行一些操作。我知道我可以創建一種全局計數器變量,並在每個視圖的viewDidLoad上更新它,如果count爲5,那麼執行該操作並重置該計數器變量。有沒有更好,更有效的方法呢?同樣展望一下,如果我需要改變某些東西,我寧願在一個文件中做所有的觀點。真的很感激這方面的一些投入。在iOS應用程序中統計訪問次數的有效方法

+0

視圖或視圖控制器?如果它是視圖控制器,您是否使用導航控制器並推入segues?它們是否都來自相同的視圖控制器類(例如'UIViewController')? –

+0

我使用xibs而不是故事板。是的,我的意思是視圖控制器,它們都來自UIViewController。謝謝。 –

回答

1

我會創建一個單例類來跟蹤您的計數器邏輯,爲您的所有視圖控制器創建一個基類,然後在基類的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 
相關問題