2014-01-31 6 views
-5

im пытается создать базовое приложение с падающим изображением сверху. Я, однако, кажется, получаю эту проблему:iOS: индекс массива не является целым числом

Array subscript is not integer 

на этой линии в моей .m:

image.center = CGPointMake[image.center.x+pos.x, image.center.y+pos.y]; 

Вот мой полный .m:

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

-(IBAction)Start { 
    timer = [NSTimer scheduledTimerWithTimeInterval:(0.10) 
     target: self 
     selector:@selector(onTimer) 
     userInfo: nil repeats: YES]; 
} 

-(void)onTimer { 

    image.center = CGPointMake[image.center.x+pos.x, image.center.y+pos.y]; 
    pos = CGPointMake(0.0, 0.17); 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

и мой .h файл это:

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController { 
    CGPoint pos; 
    IBOutlet UIImageView *image; 
    NSTimer *timer; 
} 

-(IBAction)Start; 

@end 

Кроме того, можете ли вы рассказать мне, как ma ke изображение появляется и попадает в случайные местоположения в приложении?

+0

Я даю вам +1, потому что такого рода вещи могут сбивать с толку время от времени, поэтому вы не должны быть наказаны forit. То, как вам нужно подходить к этому, - спросить себя: «Почему он говорит« индекс массива », когда это только параметры метода?» а затем искать по какой-то причине, почему компилятор считает, что происходит операция индексирования массива. Осторожно глядя на него около 5 минут, вы ударяете головой и говорите: «Конечно!» Всегда ищите подсказки в сообщении - что-то неуместное или несовместимо с тем, что, по вашему мнению, должно быть. –

+0

Извините, я новичок в iOS Programming и работаю над этим очень долго, очень устал. Но большое вам спасибо за помощь. Теперь здорово, что независимо от того, каковы мои основные навыки, всегда есть люди, которые искренне любят помогать. – DannyBios

+1

@ DannyBios Вот предложение от разработчика долгого времени - время от времени перерывы. Если вы какое-то время застряли, оставьте это немного. Вздремнуть, перекусить, пойти на прогулку, что угодно. Дайте мозгу смену пейзажей. Затем вернитесь к проблеме. Вы будете удивлены, как может помочь такой перерыв. И не забудьте некоторые базовые учебники C и Objective-C. Наслаждаться. – rmaddy

ответ

3

Заменить [ с ( и ] с )

в

CGPointMake[image.center.x+pos.x, image.center.y+pos.y];

потому

CGPointMake является функцией и вызов функции CGPointMake(...) всегда использует скобки и не скобки.

+0

Спасибо. Вы могли бы рассказать мне, как я могу сделать изображение падающим из случайных мест? будет ли это связано с использованием arc4random()? – DannyBios

+0

@ DannyBios Вероятно, но сначала попробуйте Google, а затем задайте вопросы. – Sulthan

+0

Я сделал, вот как я получил arc4random(). Я использовал: int x = arc4random()% (int) self.view.frame.size.высота; но он просто заставлял его появляться во множестве разных мест по всему экрану, поскольку он шел вниз, а не начинался с другого места наверху. если это имеет смысл? – DannyBios

0

CGPointMake - это функция C.

В качестве параметров требуется 2 CGFloats и возвращает CGPoint.

Синтаксис для вызова функции C является

result = function(param, param); 

Имя функции должно сопровождаться открытой скобкой, и разделенный запятыми список из 0 или более параметров, и закрывающая скобка.

Как уже указывали другие, вместо круглых скобок вы использовали квадратные скобки.

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