2015-01-15 4 views
-2

я определил переменную в GroupView.hкак передать переменную в Segue

@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.

Спасибо за помощь.

+0

жаль, что я написал полностью противоположное своей ошибке – user1120133

ответ

1

chatrooms определяется как Ивар, как вы сделали доступ с помощью -> обозначения:

groupView->chatrooms = [NSMutableArray arrayWithArray:chatrooms] 

Это, как правило, не рекомендуется, хотя. Вы должны использовать свойство вместо:

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

Кстати, если вы используете NSMutableArray, что указывает на то, что вы хотите изменить список элементов массива напрямую, а не просто заменить оптом массива. Если вы только когда-либо захотите заменить массив целым новым массивом каждый раз, я предлагаю вместо этого использовать NSArray.

Еще один момент, который стоит сделать, заключается в том, что вы пытаетесь отбросить объект, хранящийся в segue.destinationViewController, как GroupView. Вы либо назвали подкласс UIViewController очень вводящим в заблуждение способом, либо не получаете доступ к GroupView как правильный член UIViewController, который возвращается вам.

+0

Я внес изменения в свой почтовый ящик. – user1120133

1

Обычно, если вы не строите SDK или что-то в этом роде. У вас нет лучшей причины не раскрывать ее в заголовочном файле. Однако вы можете открыть свойство в расширении и объявить частное свойство в классе хоста (оно действительно не может пройти, если вы просто объявите локальную переменную). Например, у вас есть расширение под названием GroupView+Helper. Таким образом, вы можете передать его в свойство, выставленное в расширении. А затем внутренне перевести на GroupView.

В GroupView.m:

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

В GroupView + helper.h

@property (strong, nonatomic) NSMutableArray *internalChatrooms; 

Кроме того, вам нужно импортировать GroupView + Helper в GroupView , Это сделает ваши chatrooms частными и внутренними чемоданами.

Смежные вопросы