2014-01-20 2 views
0

У меня есть ViewController, у которого есть TableView, и я хочу получить значение из didSelectRowAtIndexPath, поэтому я могу перейти к другому представлению.Получение ценности вне метода

Это метод:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // That's the string that I want to get the value 
    NSString *selectRow = [_vinhoArray objectAtIndex:indexPath.row]; 
    stringTest = selectRow; 
} 

создать и синтезировать свойство stringTest

@property (nonatomic, strong) NSString *stringTest; 
@synthesize stringTest; 

присвоить значение из selectRow, но я думаю, что я делаю что-то неправильно , Потому что это не работает.

Кто-нибудь может мне помочь? Благодаря

+0

Так это 'stringTest' или' stringTeste'? – sha

+0

@sha ** струнаTest **! Извините, набрал неправильно. –

ответ

1

Во-первых, я хотел бы попробовать, чтобы просто посмотреть, если вы присваиваете значение по NSLog

NSLog(@"%@", [_vinhoArray objectAtIndex:indexPath.row]); 

Тогда, если вы получаете что-то в журнале, вы можете попробовать

self.stringTest = [_vinhoArray objectAtIndex:indexPath.row]; 

если вы хранят NSStrings в вашем массиве.

Попробуйте это,

создать строку в AppDelegate.h

@property (nonatomic, retain) NSString *myTitleString; 

Теперь в любом месте вы хотите получить доступ к этой строке, вы будете нуждаться, чтобы включить AppDelegate в верхней

#import "AppDelegate.h" 

, а затем использовать его для доступа к нему

AppDelegate *AppDelegate = [[UIApplication sharedApplication] delegate]; 

назначить его

AppDelegate.MyTitleString = //whatever you are going to assign it with; 

в вашем другой контроллер зрения вы будете делать то же самое, импортировать appdelegat.h в верхней части, создать приложение делегата и дать его значение в заголовке

NSString *MyStringInTheDifferentController = AppDelegate.MyTitleString; 
+0

Я пытаюсь здесь и ДА, я присваиваю значение 'stringTest' Но работает только внутри метода, если я помещаю NSLog вне метода, я получаю значение« Null ». Я хочу использовать вне метода, чтобы перейти на другой вид. –

+0

'self.stringTest = [_vinhoArray objectAtIndex: indexPath.ряд];' должны работать внутри метода. Наверняка инструкция NSLog не будет работать вне этого метода, потому что она использует indexPath, который предоставляет метод. Вы пытались присвоить его «self.stringTest»? –

+0

Да, если put 'self.stringTest', я получаю значение. Но только внутри метода. Как я могу использовать вне этого метода? Так что я могу использовать его в другом ViewController? –

0

Вставьте следующий метод сразу после @synthesize stringTest;:

- (void)setStringTest:(NSString *)stringTest 
{ 
    _stringTest = stringTest; // Insert a breakpoint here 
    /* You should see here what value does stringTest have and also who called this setter. */ 
} 

Я думаю, что это лучший способ отладки, потому что вы может переопределить право собственности stringTest после tableView:didSelectRowAtIndexPath, и вы можете не знать об этом.

P.S .: Если вы не используете ARC, этот установщик необходимо обновить.

+0

if a put this method a get error 'Использование необъявленного идентификатора _stringTest; Вы имели в виду «StringTest»? ' Я использую ARC, я работаю над XCode 5 ios7 –

+0

Тогда, пожалуйста, обновите с' @synthesize stringTest; 'на' @synthesize stringTest = _stringTest'; – arturgrigor

+0

Хорошо, теперь верно. И «stringTest» получает правильное значение. Но КАК Я могу использовать это значение в другом ViewController? Как я могу передать это значение и использовать его в другом ViewController? –

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