如何重新加载表视图,数据源(阵列)后由模态视图控制器正在编辑
嘿,我有这个问题,UITableView Not refreshing after Modal View Controller dismisses如何重新加载表视图,数据源(阵列)后由模态视图控制器正在编辑
但是,我没有似乎得到一个直接的答案,
任何人都可以摆脱一些光线吗?
继承人的代码。
FirstViewController.h
@interface FirstViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
NSMutableArray *routines;
IBOutlet UITableView *myTableView;
}
@property (nonatomic, retain) NSMutableArray *routines;
@property (nonatomic, retain) UITableView *myTableView;
- (IBAction)showNewEventViewController;
@end
及其.M
#import "FirstViewController.h"
#import "NewEventViewController.h"
@implementation FirstViewController
@synthesize routines, myTableView;
- (void)viewWillAppear:(BOOL)animated{
[myTableView reloadData];
NSLog(@"Routines: %@", routines);
NSLog(@"refreshed!");
for(int i = 0; i < [routines count]; i++){
NSLog(@"%@", [routines objectAtIndex:i]);
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [routines count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
// Set up the cell...
NSString *cellValue = [routines objectAtIndex:indexPath.row];
[cell.textLabel setText:cellValue];
return cell;
}
- (IBAction)showNewEventViewController {
NewEventViewController *controller = [[NewEventViewController alloc] initWithNibName:@"NewEventView" bundle:nil];
controller.routines = routines;
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:controller animated:YES];
[controller release];
}
- (void)viewDidLoad {
routines = [[NSMutableArray alloc] init];
[routines addObject:@"Hello"];
[routines addObject:@"Temp"];
[routines addObject:@"Temp2"];
[routines addObject:@"Temp3"];
[routines addObject:@"Temp4"];
}
和模态视图控制器的.h(NewEventViewController.h)
#import <UIKit/UIKit.h>
@interface NewEventViewController : UIViewController {
IBOutlet UITextField *RoutineTitle;
IBOutlet UITextField *RoutineInvolvment;
NSMutableArray *routines;
}
@property(nonatomic, retain) NSMutableArray *routines;
-(IBAction)done;
@end
和它的.h
#import "NewEventViewController.h"
#import "FirstViewController.h"
@implementation NewEventViewController
@synthesize routines;
-(IBAction)done{
[routines addObject:RoutineTitle.text];
[self dismissModalViewControllerAnimated:YES];
NSLog(@"Routines: %@", routines);
}
你一直在问相同的问题,所以显然在某个地方有断开连接。发布您用于展示模态视图控制器的代码。工作流应该是这样的:
创建视图控制器,你要模态推动。确保它具有用于设置表视图数据容器的ivar和访问器(例如setDataContainer:(NSMutableArray *)dataContainer)
在视图控制器上调用setDataContainer:例程。
目前模态视图控制器
在你完成按钮,记录添加到您的数据容器,您设置([dataContainer ADDOBJECT:NEWOBJECT],并解雇模态视图控制器
呼叫reloadData在viewWillAppear中,你正在做的从上面的链接代码。
我们不能帮你,如果你不张贴一些代码,显示你在做什么。
最好的问候,
您完成的选择器需要调用reloadData。如果一切正确连线(表视图委托,数据源)它应该正常工作。但是,您可以将视图设置为隐藏并重新显示,直到它可以正常工作,但它太恶心(而不是正确的方法)。
你做的是NewEventViewController的一部分,所以您可以:
1张通行证通过使用NSNotificationCenter defaultCenter
2.Make的FirstViewController实例数据的全局就是从做选择访问。
ive添加了代码。 我从另一个答案的建议中这样写道。 所以,如果你看到它的错误,那么请纠正它。 但是,它似乎将字符串添加到数组中,从MVC, 但它不重新加载它。 :( – 2010-01-20 06:27:39
你的代码看起来很好,我看到的唯一的东西是你的viewDidLoad没有调用[super viewDidLoad];另外,你的表视图插座是否断开连接?这可以解释为什么当你调用reloadData 。我自己创建了一个项目,它可以毫无问题地完成你想要的任务,看看它并比较你所拥有的东西,然后让我知道它们之间的差别,目前我看不到它:http: //www.cimgf.com/files/CreateModalRecord.zip – 2010-01-20 07:17:48
我改变了我的一些东西,但没有什么区别。如果我只是建立在你的项目上,你会感到恼火吗? – 2010-01-20 08:14:12