Ios Can';t访问其他函数中的数组
在lynda.com上的一篇教程之后,我做了一个安排。也许教程有点旧,但当我在viewDidLoad中创建数组时,我无法在中访问它Ios Can';t访问其他函数中的数组,ios,objective-c,arrays,Ios,Objective C,Arrays,在lynda.com上的一篇教程之后,我做了一个安排。也许教程有点旧,但当我在viewDidLoad中创建数组时,我无法在中访问它 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 函数,所以我将它从viewDidLoad移到了这个函数中,现在我无法在prepare for segue函数中访问它,所以我必须重新创建数组,以便执行我想要执行的
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
函数,所以我将它从viewDidLoad移到了这个函数中,现在我无法在prepare for segue函数中访问它,所以我必须重新创建数组,以便执行我想要执行的操作。这就是应该发生的吗?您需要在@interface中创建属性,例如:
@interface SettingsViewController ()
@property (strong, nonatomic) NSMutableArray *settings;
@end
这将创建一个可以在整个类中使用的变量(它的private,tho)。要访问它(getter/setter),然后键入self.settings
然后,不要在
cellForRow..
中创建数组,只需在viewDidLoad
中添加设置即可,例如:
self.settings = [NSMutableArray new];
Settings *settingsStar = [Settings new];
settingsStar.name = @"Rate the App";
[self.settings addObject:settingsStar];
Settings *settingsShare = [Settings new];
settingsShare.name = @"Tell Your Friends";
[self.settings addObject:settingsShare];
...
为了使代码更清晰,您甚至可以基于数组将其与for循环一起使用,如:
self.settings = [NSMutableArray new];
NSArray *settingsNames = @[@"Rate the App", @"Tell Your Friends"];
for (NSString *setting in settingsNames) {
Settings *newSettings = [Settings new];
newSettings.name = setting;
[self.settings addObject:newSettings];
}
您需要包括您实际询问的代码。听起来很可能是在需要实例变量时创建了本地数组。