如何在segue中传递变量
how to pass the variable in segue
我在GroupView.h
中定义了变量
@interface GroupView()
{
NSMutableArray *chatrooms;
}
@end
@implementation GroupView
现在我想在 segue 中传递这个变量
@interface FriendsViewController ()
@end
@implementation FriendsViewController
else if ([segue.identifier isEqualToString:@"showGroupView"]) {
GroupView *groupView = (GroupView *)segue.destinationViewController;
groupView.chatrooms = [NSMutableArray arrayWithArray:chatrooms];
}
我知道聊天室必须在头文件中 属性 才能以这种方式编码,但它不是
那么有没有办法在segue中使用这个变量呢
感谢您的帮助。
chatrooms
定义为像您所做的那样使用 ->
表示法访问的 ivar:
groupView->chatrooms = [NSMutableArray arrayWithArray:chatrooms]
不过,通常不鼓励这样做。您应该改用 属性:
@interface GroupView
@property (strong) NSMutableArray *chatrooms;
@end
顺便说一句,如果您使用的是 NSMutableArray
,则表示您要直接修改数组的元素列表,而不是直接替换数组。如果您只想每次都用一个全新的数组替换数组,我建议改用 NSArray
。
这里要说明的另一点是,您正试图将 segue.destinationViewController
处的对象转换为 GroupView
。您要么以极具误导性的方式命名了 UIViewController
子类,要么您没有将 GroupView
作为返回给您的 UIViewController
的正确成员进行访问。
通常情况下,如果您不构建 SDK 或其他东西。您真的没有更好的理由不在头文件中公开它。不过可以在extension中暴露属性,在host class中声明private的属性(只声明一个局部变量确实过不了)。例如,您有一个名为 GroupView+Helper
的分机。因此,您可以将其传递到扩展中公开的 属性 中。然后内部翻译成GroupView
.
在GroupView.m:
@interface GroupView
@property (strong, nonatomic) NSMutableArray *chatrooms;
@end
在GroupView+Helper.h
@property (strong, nonatomic) NSMutableArray *internalChatrooms;
此外,您需要在GroupView中导入GroupView+Helper。
它将使您的 chatrooms
私人和内部聊天室受到保护。
我在GroupView.h
中定义了变量@interface GroupView()
{
NSMutableArray *chatrooms;
}
@end
@implementation GroupView
现在我想在 segue 中传递这个变量
@interface FriendsViewController ()
@end
@implementation FriendsViewController
else if ([segue.identifier isEqualToString:@"showGroupView"]) {
GroupView *groupView = (GroupView *)segue.destinationViewController;
groupView.chatrooms = [NSMutableArray arrayWithArray:chatrooms];
}
我知道聊天室必须在头文件中 属性 才能以这种方式编码,但它不是
那么有没有办法在segue中使用这个变量呢
感谢您的帮助。
chatrooms
定义为像您所做的那样使用 ->
表示法访问的 ivar:
groupView->chatrooms = [NSMutableArray arrayWithArray:chatrooms]
不过,通常不鼓励这样做。您应该改用 属性:
@interface GroupView
@property (strong) NSMutableArray *chatrooms;
@end
顺便说一句,如果您使用的是 NSMutableArray
,则表示您要直接修改数组的元素列表,而不是直接替换数组。如果您只想每次都用一个全新的数组替换数组,我建议改用 NSArray
。
这里要说明的另一点是,您正试图将 segue.destinationViewController
处的对象转换为 GroupView
。您要么以极具误导性的方式命名了 UIViewController
子类,要么您没有将 GroupView
作为返回给您的 UIViewController
的正确成员进行访问。
通常情况下,如果您不构建 SDK 或其他东西。您真的没有更好的理由不在头文件中公开它。不过可以在extension中暴露属性,在host class中声明private的属性(只声明一个局部变量确实过不了)。例如,您有一个名为 GroupView+Helper
的分机。因此,您可以将其传递到扩展中公开的 属性 中。然后内部翻译成GroupView
.
在GroupView.m:
@interface GroupView
@property (strong, nonatomic) NSMutableArray *chatrooms;
@end
在GroupView+Helper.h
@property (strong, nonatomic) NSMutableArray *internalChatrooms;
此外,您需要在GroupView中导入GroupView+Helper。
它将使您的 chatrooms
私人和内部聊天室受到保护。