Есть несколько вопросов. Непонятно, что вы пытаетесь сделать.
Вы задаете для self.tableDataSource3 значение tempArray, а затем для него устанавливается значение [AppDelegate.data3 ....];
Почему?
NSArray *tempArray = [[NSArray alloc] init];
self.tableDataSource3 = tempArray;
[tempArray release];
MyAppDelegate *AppDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
self.tableDataSource3 = [AppDelegate.data3 objectForKey:@"Rows"];
При запуске [self loadData3] вызывается дважды. Однажды в viewDidLoad и viewDidAppear. Ненужные. Должно быть только в viewWillAppear.
Вы либо не сохраняете данные, которые добавляете, либо не получаете их должным образом. Возможно, придется пройтись по вашему коду, чтобы увидеть, получаете ли вы данные, которые должны получать.