ошибка: ожидаемое выражение перед createCharacter - PullRequest
1 голос
/ 09 декабря 2010

, поэтому я использую presentmodalviewcontroller для изменения активных представлений в приложении ipad.однако, когда я пытаюсь изменить его, используя оператор [self presentModalViewController:createCharacter animated:NO]; в ibaction, который вызывается кнопкой.Однако я получаю сообщение об ожидаемом выражении перед «createCharacter».createCharacter - это пользовательский контроллер представления, который я создал ... кто-нибудь знает, что я делаю неправильно?если вам нужен более соответствующий код, просто дайте мне знать, спасибо

дополнительный соответствующий код:

#import "createCharacter.h";


-(IBAction) buildCharacter{
    [self presentModalViewController:createCharacter animated:NO];      
}

createCharacter.h:

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

@interface createCharacter : UIViewController {
    IBOutlet UIView *view;
}

@end

Ответы [ 3 ]

1 голос
/ 09 декабря 2010

Я бы хотел увидеть какой-нибудь код, и без него, возможно, этот совет будет неправильным, НО ... по своему опыту я всегда использовал IBActions с одним аргументом, и этот аргумент всегда былотправитель, поэтому что-то вроде привязывания нажатия кнопки к `

-(IBAction) presentNewController:(id)sender` 

, где отправитель - это кнопка, которая была нажата.

Если вы используете такой метод, чтобы обнаружить нажатие кнопки от IB,тогда в коде вы хотели бы что-то вроде:

// In your current view controller, the target where you wired up the button
-(IBAction) presentNewController:(id)sender
{
    if([sender isEqual:<whatever button you expect>])
    {
        CustomController *con = [[[CustomController alloc] init] autorelease];
        [selfpresentModalViewController:con animated:YES];
    }
}
0 голосов
/ 09 декабря 2010

Похоже, что вы отправляете класс для presentModalViewController: animated :. Вам нужно инициализировать класс, как показал Рог. Что касается ответа MahatmaManic, я понятия не имею, почему это избавило вас от вашей ошибки. Он корректен для OS X, но аргумент не требуется для iOS.

Есть несколько причин, по которым вы все еще можете получить ошибку после следования примеру Рога:

  1. У вас есть переменная с именем createCharacter, что означает, что она уже была инициализирована. В этом случае измените имя вашего класса на CreateCharacter. Классы обычно пишутся с заглавной буквы, и это гарантирует, что его не перепутают с переменной.
  2. Файл заголовка createCharacter импортирован неправильно. Если вы измените имя файла в XCode, это фактически не изменит имя файла. Если вы попытаетесь импортировать файл с новым именем, он не будет работать.
  3. Ваш код инициализации был неверным. В примере Рога он использовал имена аргументов по умолчанию. Вам следует изменить yourNibNameORnil на имя вашего файла NIB или nil, если вы не используете NIB. Вам также следует изменить yourBundleNameORnil на ноль, предполагая, что NIB находится в комплекте вашего приложения. Вот пример, предполагающий, что NIB находится в приложении и называется createCharacter.xib:

    createCharacter * customView = [[createCharacter alloc] initWithNibName: @ "createCharacter" bundle: nil];

0 голосов
/ 09 декабря 2010

Вам нужно выделить и инициализировать createCharacter, прежде чем вы сможете вставить его в представление.

Предполагая, что createCharacter является контроллером представления:

createCharacter *customView = [[createCharacter alloc] initWithNibName:yourNibNameORnil bundle:yourBundleNameORnil];
[self presentModalViewController:customView animated:YES];
[customView release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...