2015-01-15 122 views
-2

我已經在GroupView.h如何通過變量SEGUE

定義的變量
@interface GroupView() 
{ 

    NSMutableArray *chatrooms; 
} 

@end 

@implementation GroupView 

現在我想通過這個變量賽格瑞

@interface FriendsViewController() 

@end 

@implementation FriendsViewController 


else if ([segue.identifier isEqualToString:@"showGroupView"]) { 
      GroupView *groupView = (GroupView *)segue.destinationViewController; 
      groupView.chatrooms = [NSMutableArray arrayWithArray:chatrooms]; 
    } 

我知道,聊天室必須是財產頭文件代碼這種方式,但它不是

所以有什麼辦法在segue中使用這個變量。

感謝您的幫助。

+0

對不起,我寫了完全與我的錯誤 – user1120133 2015-01-15 18:14:13

回答

1

chatrooms定義爲伊娃喜歡你所做的使用->符號訪問:

groupView->chatrooms = [NSMutableArray arrayWithArray:chatrooms] 

這一般不提倡,但。您應該使用屬性,而不是:

@interface GroupView 
@property (strong) NSMutableArray *chatrooms; 
@end 

順便說一句,如果您使用的是NSMutableArray,即表明您想直接和不修改數組的元素列表只需更換陣列批發。如果你只想每次都用一個全新的陣列替換陣列,我建議改用NSArray

此處的另一個要點是,您試圖將保存在segue.destinationViewController處的對象作爲GroupView進行投射。您以非常令人誤解的方式命名了UIViewController子類,或者您沒有訪問GroupView作爲返回給您的UIViewController的正確成員。

+0

我對我的帖子所做的更改請檢查它。 – user1120133 2015-01-15 18:14:51

1

通常情況下,如果你沒有構建SDK或其他東西。你沒有更好的理由不把它暴露在頭文件中。但是,您可以在擴展中公開該屬性並在宿主類中聲明一個私有屬性(如果您只聲明瞭一個局部變量,那麼它真的無法通過)。例如,您有一個名爲GroupView+Helper的分機。所以,你可以將它傳遞給擴展中暴露的屬性。然後在內部翻譯成GroupView

GroupView.m

@interface GroupView 
@property (strong, nonatomic) NSMutableArray *chatrooms; 
@end 

GroupView + Helper.h

@property (strong, nonatomic) NSMutableArray *internalChatrooms; 

此外,您還需要導入GroupView +輔助GroupView 。 這將使您的chatrooms私人和internalChatrooms保護。