0

我經歷的iTunesU斯坦福CS193P課程,我就怎麼做最近觀看的照片部分的分配4.CS193P的UITabBarController MVC幫助的分配4

在分配有點摸不着頭腦,我們是有帶有兩個選項卡的選項卡欄控制器。 第一個選項卡是一個導航控制器,它將顯示一個地點表,它將推送一張照片名稱表,這將推動帶有照片的滾動視圖 第二個選項卡是一個導航控制器,它將顯示最近查看的照片的表格,這將推動一張照片的滾動視圖。

我有第一個標籤工作,現在當我用圖像推動滾動視圖,我也想添加該照片到最近的照片數組,MVC應該擁有這個最近的照片數組?

  1. 的標籤視圖控制器(如果這樣的文件說,這一類不適合子類化)

  2. 第二個選項卡的根表視圖控制器(我怎麼當前照片傳給(坦率地說應該是第一個標籤瞭解第二個標籤)

  3. 第一個標籤的根表視圖控制器(然後第二個標籤如何從第一個標籤中獲取這些數據? )

  4. 別的東西

我想我仍然朦朧談論MVC的協議,委託和數據源。如果你有解決方案來完成這項任務,我將不勝感激。

我結束了推拉用戶默認值的數據。 雖然我很好奇爲什麼標籤欄控制器不打算進行子分類。這似乎是數據在多個選項卡需要時擁有的最合理的地方。

回答

1

經過一堆額外的搜索之後,我沒有發現任何一種一致的方式將數據從選項卡傳遞到選項卡。

由於我們只存儲相對較少的數據,因此我決定使用類方法(爲了方便起見)創建一個類,以便將數據推送到用戶默認值。

+0

不能使用應該是一個singelton?那麼你不必傳遞它的引用,因爲你永遠不會以正常的方式創建它。它就像一個靜態變量,但你可以將方法和變量連接到它,當你在一個選項卡中添加東西時,它會在其他選項卡中獲取時出現。 – chikuba 2012-03-10 09:15:20

+0

我不明白爲什麼不這樣做,但此作業需要的另一個功能是在應用程序啓動之間存儲最近查看的照片。所以用戶默認完成這兩項任務。 – 2012-03-11 15:11:07

+0

不知道用戶默認值。感謝你:) – chikuba 2012-03-11 20:57:24

1

我做了類似的事情,如果我完全不懷念你的問題,你可以創建一個Singelton,它可以像某種共享數據庫一樣工作。它將永遠不會以正常方式初始化,只是在第一次使用它時創建。這singelton可能包含你的數組,然後你可以僅通過寫調用它從無處不在:

[SingeltonType main].sharedPhotos 

下面的例子是從我自己的代碼,我有一個「用戶」,這是應用程序的所有者。我在那裏存儲一個數據庫,其中的信息可以在運行時從任何地方獲得。

頭:

@interface User : NSObject { 
Database *_storage; 
} 

@property (nonatomic, retain) Database *storage; 

+(User*)owner; 

主要文件:

#import "User.h" 

@implementation User 

@synthesize password = storage = _storage; 

static User* _owner = nil; 

+(User*)owner { 
    @synchronized([User class]) { 
     if(!_owner) [[self alloc] init]; 

     return _owner; 
    } 
    return nil; 
} 

+(id)alloc { 
    @synchronized([User class]) { 
     NSAssert(_owner == nil, @"Attempted to allocate a second instance of a singleton."); 
     _owner = [super alloc]; 

     return _owner; 
    } 
    return nil; 
} 

-(id)init { 
    self = [super init]; 

    if(self != nil) { 
     self.storage = [[[Database alloc] init] autorelease]; 
    } 
    return self; 
} 

然後,我只是把它像這樣:

[User owner].storage // which gives me access to it 

希望幫助!如果您需要訪問不同地方的數據,那麼該功能非常有用:)

注意:您將只有一個此對象的實例,無法創建更多。

0

我通過使用協議搞混了這個問題。我在顯示圖像的類(和UIScrollView)中創建了協議。然後,我在「瀏覽照片」tableController類中採用了協議,並實現了傳遞查看圖像的協議方法。我遇到的問題是,如何將「已觀看的照片」tableController類定義爲委託,因爲1)它尚未加載,並且在查看圖片之後才能加載2)您如何通過導航工作控制器和選項卡控制器指向聲明該協議的類。在這裏,從編程方法學的角度來看,從這裏的專家那裏聽說協議或類方法是否正確?

感謝 KB