我有第一个视图控制器(FirstView Controller),它上面有两个TextField和一个包含TableViewCell和Label的TableView。我有第二个视图控制器(TypeViewController),它还包括TableView和TableViewCell,其中包含一个Label。
在FirstViewController上选择TableViewCell,文本为选择 - >继续查看TypeViewController
在TypeViewController上选择TableViewCell(在TypeViewController上我有单元格列表,动态加载) - >返回到FirstViewController,而不是文本选择显示在TypeViewController上选择的文本。
如何将FirstViewController上TableViewCell上的Label文本更改为TypeViewController中的文本?
第一视图控制器
import UIKit
class FirstViewController: UIViewController, UITextFieldDelegate, UITableViewDataSource, UITableViewDelegate {
var animalTypeName: String?;
var selectedTypeId: UInt?;
var selectedTypeName: String?;
override func viewDidLoad() {
super.viewDidLoad();
}
// MARK: TableView && TableViewCell Methods
// Row display.
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1;
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! FirstTableViewCell;
animalTypeName = "Choose";
cell.typeName.text = animalTypeName;
return cell;
}
//MARK: - Navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
switch(segue.identifier ?? "") {
case "ShowType":
guard segue.destination is TypeViewController else {
fatalError("Unexpected destination: \(segue.destination)");
}
default:
fatalError("Unexpected Segue Identifier; \(String(describing: segue.identifier))");
}
}
//MARK: Actions
@IBAction func unwindToCreateMedicamentController(sender: UIStoryboardSegue) {
if let typeViewController = sender.source as? TypeViewController, let type = typeViewController.type {
selectedTypeName = type.name;
selectedTypeId = type.animalTypeId;
animalTypeName = selectedTypeName;
}
}
}
TypeViewController
import UIKit
class TypeViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
var typeList: [AnimalType]?;
var type: AnimalType?;
let typeController = AnimalTypeController();
override func viewDidLoad() {
super.viewDidLoad();
// Call method to get array of AnimalType items.
getArrayOfTypeItems();
}
//MARK: - Table view data source
func numberOfSections(in tableView: UITableView) -> Int {
return 1;
}
// Row display.
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return typeList?.count ?? 0;
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Table view cells are reused and should be dequeued using a cell identifier.
let cellIdentifier = "TypeTVCell";
guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? TypeTableViewCell else {
fatalError("The dequeued cell is not an instance of TypeTVCell.");
}
let typeItem = typeList?[indexPath.row];
cell.nameOfType.text = typeItem!.name;
return cell;
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
switch(segue.identifier ?? "") {
case "ChooseType":
guard segue.destination is CreateMedicamentController else {
fatalError("Unexpected destination: \(segue.destination)");
}
guard let selectedTypeCell = sender as? TypeTableViewCell else {
fatalError("Unexpected sender: \(String(describing: sender))");
}
guard let indexPath = tableView.indexPath(for: selectedTypeCell) else {
fatalError("The selected cell is not being displayed by the table");
}
let selectedType = typeList?[indexPath.row];
type = selectedType;
default:
fatalError("Unexpected Segue Identifier; \(String(describing: segue.identifier))")
}
}
}
答案 0 :(得分:1)
在null
方法 s 中,您需要添加以下代码:
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
<Grid Margin="{TemplateBinding Padding}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border x:Name="columnHeaderBorder"
TextBlock.FontWeight="Bold"
TextBlock.Foreground="blue"
BorderThickness="2"
BorderBrush="blue"
Background="white"
Width="{TemplateBinding Width}"
Margin="3,3,3,3"
Padding="3,0,3,0">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
<!--BorderBrush="{Binding VerticalGridLinesBrush, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}"-->
<Thumb x:Name="PART_RightHeaderGripper" Grid.Column="1"
HorizontalAlignment="Right"
Width="6" BorderThickness="0"
Margin="0,3"
BorderBrush="white"
Background="white"
Cursor="SizeWE">
<Thumb.Template>
<ControlTemplate>
<Border Background="{TemplateBinding Background}"></Border>
</ControlTemplate>
</Thumb.Template>
</Thumb>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="Content" Value="{x:Null}">
<!--<Setter Property="BorderBrush" Value="Red" TargetName="columnHeaderBorder"/>-->
<Setter Property="BorderBrush" Value="Transparent" TargetName="columnHeaderBorder"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
答案 1 :(得分:0)
class FirstViewController: UIViewController, UITextFieldDelegate, UITableViewDataSource, UITableViewDelegate {
var animalTypeName: String?;
var selectedTypeId: UInt?;
var selectedTypeName: String?;
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad();
animalTypeName = "Choose";
}
// MARK: TableView && TableViewCell Methods
// Row display.
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1;
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! FirstTableViewCell;
cell.typeName.text = animalTypeName;
return cell;
}
//MARK: - Navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
switch(segue.identifier ?? "") {
case "ShowType":
guard segue.destination is TypeViewController else {
fatalError("Unexpected destination: \(segue.destination)");
}
default:
fatalError("Unexpected Segue Identifier; \(String(describing: segue.identifier))");
}
}
//MARK: Actions
@IBAction func unwindToCreateMedicamentController(sender: UIStoryboardSegue) {
if let typeViewController = sender.source as? TypeViewController, let type = typeViewController.type {
selectedTypeName = type.name;
selectedTypeId = type.animalTypeId;
animalTypeName = selectedTypeName;
tableView.reloadData();
}
}
}
animalTypeName = "Choose";
移至viewDidLoad
。@IBOutlet weak var tableView: UITableView!
FirstViewController
tableView.reloadData()
unwindToCreateMedicamentController(sender: UIStoryboardSegue)