我想知道在iOS中向tableview添加新单元格的最佳方法是什么。假设我有一个firstviewcontroller和一个secondviewcontroller。在firstviewcontroller上我有一个已经填充了一些数据的tableview,我还有一个导航栏,顶部有一个添加按钮。点击添加按钮将显示一个新视图,然后我想将数据从secondviewcontroller传递到firstviewcontroller并用它填充我的tableview。
谢谢, 萨姆
答案 0 :(得分:1)
你的secondViewController应该创建一个委托协议。然后应将您的firstViewController指定为其委托。
一旦secondViewController保存数据,它就会调用firstViewController应该实现的方法
这里有一个很好的例子: How do I create delegates in Objective-C?
让你入门:secondViewController.h
@protocol secondViewControllerDelegate;
@interface secondViewController : UIViewController{
id<secondViewControllerDelegate> __unsafe_unretained delegate;
}
@property (nonatomic, unsafe_unretained) id<secondViewControllerDelegate> delegate;
@end
@protocol secondViewControllerDelegate <NSObject>
- (void)dataSaved;
@end
答案 1 :(得分:0)
您可以使用tableView数据源添加新类。使用nesessary数据(来自两个View控制器。使用委托合作)和anu数据chaging调用[tableView setDataSource:]:
// DataSourceAtoZ.h
#import <Foundation/Foundation.h>
#import "MallsViewController.h"
@interface DataSourceCategory : NSObject <UITableViewDataSource> {
NSMutableArray *data;
UITableView *tableView;
}
@property (nonatomic, retain) NSMutableArray *data;
- (id)initWithData:(NSMutableArray *)d;
@end
然后,在代码中的任何地方,组合您希望在tableView中设置的数据并设置dataSource:
NSMutableArray *dt = [[NSMutableArray alloc] init];
for (int i = 0; i < [categories count]; i++) {
NSMutableArray *names = [[NSMutableArray alloc] init];
[names addObject:[[categories objectAtIndex:i] objectAtIndex:0]];
for (int j = 1; j < [[categories objectAtIndex:i] count]; j++) {
NSRange match = [[[categories objectAtIndex:i] objectAtIndex:j] rangeOfString:[params objectAtIndex:0]];
if (match.length != 0) {
[names addObject:[[categories objectAtIndex:i] objectAtIndex:j]];
}
}
[dt addObject:names];
[names release];
}
dsCategory = [[DataSourceCategory alloc] init];
dsCategory = [dsCategory initWithData:dt];
[dt release];
答案 2 :(得分:0)
您应该在App委托中创建数组,然后调用它们并根据需要更改它们。
MyAppDelegate *appDelegate = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];
一旦有了这一行,就可以连接两个类并调用委托上的任何方法,例如:
[appDelegate populateMyArray];
你没有像你描述的那样添加“新细胞”,你使用相同的细胞并用不同的数据填充它们。