Вопрос по ios, objective-c, xcode – Простая передача переменных между классами в Xcode

3

Я пытаюсь сделать приложение IOS, но я застрял в передаче данных между классами. Это мое второе приложение. Первый был сделан с глобальным классом, но теперь мне нужно несколько классов. Я перепробовал много уроков, но ничего не получалось или переданное значение всегда было равно нулю. Может кто-нибудь, пожалуйста, напишите мне простое приложение, чтобы продемонстрировать передачу переменных в IOS 5. Ничего особенного, раскадровка с 2 контроллерами представления, одна переменная.

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

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Navigation logic may go here. Create and push another view controller.

            FirstViewController *fv;
            fv.value = indexPath.row;

            NSLog(@"The current %d", fv.value);

            FirstViewController *detail =[self.storyboard instantiateViewControllerWithIdentifier:@"Detail"];
            [self.navigationController pushViewController:detail animated:YES]; 

}

Вот код из моего основного представления, и мне нужно отправить indexPath.row или индекс ячейки, которую я нажал, к следующему представлению

Добавьте свой код, и вам помогут - никто не собирается писать приложение для вас AnthonyBlake
@DrummerB: ахахах, я держу эту ссылку! Martin
опубликовать код .... pie
я думал о простом пустом приложении, но все в порядке, через несколько минут Shawn

Ваш Ответ

3   ответа
1

вы должны перегрузить метод prepareToSegue

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// check if it's the good segue with the identifier
if([[segue identifier] isEqualToString:@"blablabla"])
{
    // permit you to get the destination segue
    [segue destinationViewController];
    // then you can set what you want in your destination controller
}
}
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Shawn
1

с которой вы сталкиваетесь, довольно сложна для начинающих. & Quot; Решая & Quot; неправильный путь может привести к изучению множества вредных привычек.
Пожалуйста, посмотрите наОле Бегеманнотличный учебник поПередача данных между контроллерами представления - это действительно стоит прочитать.

12

которые нужно сделать. В зависимости от приложения вы можете добавить переменную в класс AppDelegate, сделав ее доступной для всех классов через общий экземпляр. Самым распространенным (я думаю) является создание синглтона. Чтобы это работало, вы можете создать класс, скажем StoreVars, и статический метод, который возвращает объект, что делает класс «глобальным». Внутри метода вы инициализируете все свои переменные, как всегда. Тогда вы всегда можете добраться до них откуда угодно.

@interface StoreVars : NSObject

@property (nonatomic) NSArray * mySharedArray;
+ (StoreVars*) sharedInstance;

@implementation StoreVars
@synthesize mySharedArray;

+ (StoreVars*) sharedInstance {
    static StoreVars *myInstance = nil;
    if (myInstance == nil) {
        myInstance = [[[self class] alloc] init];
        myInstance.mySharedArray = [NSArray arrayWithObject:@"Test"];
    }
    return myInstance;
}

Это сделает синглтон. Если вы не забыли импортировать & quot; StoreVars.h & quot; в ваших двух viewControllers вы можете получить доступ к общедоступному массиву вот так;

[StoreVars sharedInstance].mySharedArray;
               ^

Это метод, возвращающий объект StoreVars. Внутри класса StoreVars вы можете реализовать любой объект и инициализировать его в статическом методе. Просто не забывайте инициализировать его, иначе ваш объект будет 0 / ноль.

Если вы не являетесь поклонником UINavigationController и предпочитаете использовать сегменты, это намного проще, но может сделать ваше приложение довольно "грязным" имо. В UIViewController реализован метод, который вы должны перегрузить:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Make sure your segue name in storyboard is the same as this line
    if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"])
    {
        // Get reference to the destination view controller
        YourViewController *vc = [segue destinationViewController];

        // Pass any objects to the view controller here, like...
        [vc setMyObjectHere:object];
    }
}

источник:Как пройти prepareForSegue: объект

Проведите исследование, прежде чем задавать подобные вопросы. Прочтите несколько уроков, попробуйте сами, а затем задайте вопросы, связанные с тем, что вы действительно ищете. Не обычные люди хотят сделать всю работу за вас, но иногда вам везет. Как сегодня.

Приветствия.

Error: User Rate Limit Exceeded Shawn

Похожие вопросы