2015-01-15 86 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保护。