我有一个视图,它由一个动态变化的标签组成。如何将标签中的文本放入数组中,然后将其传递给另一个视图控制器?
答案 0 :(得分:1)
那么你的问题不是那么清楚,但正如我所能预测的那样,你正在从标签视图导航到表格视图,并希望在tableview中显示标签的所有值。 您可以通过将这些标签的所有值放在可变数组中并在表视图控制器中实现此目的,创建NSMutableArray类型的属性。在导航时,将标签视图数组放入表视图控制器的属性中。 您可以看到以下代码供参考。
标签视图控制器
@interface DummyViewController (){
NSMutableArray *array;
}
@end
@implementation DummyViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"segue"]) {
array = [[NSMutableArray alloc]initWithObjects:label1.text,label2.text,label3.text nil];
FinalTableViewController *view = [self.storyboard instantiateViewControllerWithIdentifier:@"view"];
view.dataArray = array;
}
}
在表格视图控制器
中.h文件
@interface DummyViewController : UIViewController
@property (nonatomic,strong) NSMutableArray *dataArray;
@end
现在在表视图中使用此数据数组委托方法来填充数据。 如果您发现答案有用,请不要忘记打绿色。
答案 1 :(得分:0)
创建一个像NSDictionary或NSArray的数据结构,并将View A的详细信息保存到其中。然后,当调用视图B时,将这些值传递给视图B并使用它来填充TableView
swift中的例子
类ViewController:UIViewController {
var label1 = UILabel()
var label2 = UILabel()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func updateLabels()
{
label1.text = "LABEL 1"
label2.text = "LABEL 2"
}
///If you are using Xibs
@IBAction func loadTableViewController()
{
// Create a data structure for the data you want to send
var array : NSMutableArray = NSMutableArray()
array.addObject(label1.text!)
array.addObject(label2.text!)
// Create a viewcontroller instance of tableViewController
let viewcontroller = tableViewController(nibName:"tableViewController",bundle:nil)
viewcontroller.dataSourceArray = array
}
//// If you are using Story Board
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
// Create a data structure for the data you want to send
var array : NSMutableArray = NSMutableArray()
array.addObject(label1.text!)
array.addObject(label2.text!)
// Create a new variable to store the instance of tableViewController
let destinationVC = segue.destinationViewController as! tableViewController
destinationVC.dataSourceArray = array
}
class tableViewController:UITableViewController {
@IBOutlet var tableview: UITableView!
var dataSourceArray : NSMutableArray!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// dataSourceArray will contain the label details passed from previous view controller.
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// you can set the details from the dataSourceArray
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// you can set the details from the dataSourceArray
}