как да изпратите стойност от view2 към view1

Проблемът ми е как да презаредя табличния изглед

Имам 2 контролера за изглед.

В първия Viewcontroller имам един изглед на таблица. ако избера който и да е ред в tableview, той отива към втория контролер на изгледа.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{
    NextPageController *nextView = [[NextPageController alloc] initWithNibName:@"NextPageView" bundle:nil];
    [self.navigationController presentModalViewController:nextView animated:YES];
    [nextView release];
}

във втори контролер за изглед имам едно текстово поле. Ако въведа някаква стойност в текстовото поле, трябва да покажа тази стойност в първия изглед на таблица на контролера на изгледа.

може ли някой да ми помогне?

Благодаря предварително.


person Thukaram    schedule 20.08.2011    source източник


Отговори (5)


дайте на NextPageController протокол и делегат, точно като този:

@protocol (NextPageControllerDelegate)
-(void)displayString:(NSString *)inputString;
@end

@interface FirstTableViewController : UITableViewController {
    id<NextPageControllerDelegate> stringDelegate;
}

@property (nonatomic, assign) id<NextPageControllerDelegate> stringDelegate;

и във файла .m:

@implementation
@synthesize stringDelegate;

след това, когато разпределите NextPageViewController, вмъкнете това:

(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;  
{ 
    NextPageController *nextView = [[NextPageController alloc] initWithNibName:@"NextPageView" bundle:nil]; 

    nextView.stringDelegate = self;

    [self.navigationController presentModalViewController:nextView animated:YES]; 
    [nextView release]; 
}

разбира се, вашият контролер за изглед на таблица трябва да съответства на протокола NextPageControllerDelegate и да дава изпълнението на

-(void)displayString:(NSString *)inputString;

след това, когато сте в nextView и искате табличният изглед да показва този низ, можете да направите следното:

if(nil != self.stringDelegate)
    [self.stringDelegate displayString:someString];

мравка тогава е готово

person Lewen    schedule 20.08.2011

Направете глобален низ,

Присвоете го във secondViewController и когато преминете от secondViewController към FirstViewController, viewWillAppear ще извика.

направете логика, така че да използва глобална променлива и след това да презареди таблицата ..

person Ravi Chokshi    schedule 20.08.2011

трябва да имате глобална NSString променлива в appDelegate, която съхранява вашия текст или текст, въведен във втори изглед.

Сега, когато се върнете на предишната страница, в

- (void) viewWillAppear
{
    [yourDataSourceArray addObject:appDelegate.yourGlobalString];
    [yourTableView reloadData];
}

и да, уверете се, че вашето yourDataSourceArray е NSMutableArray.

Дано ти помогне.

person Maulik    schedule 20.08.2011

Можете да създадете свойство за NSString във вашия първи изглед и свойство за екземпляр на първия контролер на изглед (UITableViewController?) във вашия втори изглед. След това при запазване или изскачане или каквото и да правите във втория контролер за изглед, след като сте въвели текста, който искате, можете да зададете свойството на NSString, да отворите изгледа и да презаредите tableView във viewWillAppear. Като алтернатива можете да използвате делегиране, както описа Lewen.

person Mark Leonard    schedule 20.08.2011

създайте глобален NSMutableArray.
Съхранявайте и добавете всички данни в този NSMutableArray.
В -(void) viewwillappear от първи клас извикайте [tablename reloadData];

person Baby Groot    schedule 20.08.2011
comment
трябва да извикам това в първия viewcontroller или втория - person Thukaram; 20.08.2011
comment
Изгледът, в който показвате вашата таблица. - person Baby Groot; 20.08.2011