pickOption = carName.text
),它失败了:
无法将String类型的值赋值为[String]类型的值。
尝试很多事情,但没有任何作用。
import UIKit
class CarDetailViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var carName: UITextField!
var pickOption = ["Opel", "Mercedes", "Hyundai", "Kia"]
override func viewDidLoad() {
super.viewDidLoad()
var pickerView = UIPickerView()
pickerView.delegate = self
carName.inputView = pickerView
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickOption.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return pickOption[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
carName.text = pickOption[row]
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "doneSegue" {
pickOption = carName.text
}
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
self.view.endEditing(true)
}
}
答案 0 :(得分:2)
由于pickOption
是一个数组而carName
文本是一个字符串,因此您有两个选择:
carName
添加到数组中,在这种情况下,您执行pickOption.append(carName.text)
pickOption = [carName.text]
答案 1 :(得分:1)
下面:
pickOption = carName.text
您正在为pickOption分配一个字符串。
(这个答案基本上就是编译器告诉你的,但不知道还能说些什么)。
答案 2 :(得分:1)
你想做什么?如果您尝试使列表中只包含所选项目,那么您将需要使pickOption
成为一个只包含该字符串的数组:
pickOption = [carName.text]
如果您只是想保存已挑选的数据,那么您应该完全使用不同的实例变量。这样做的原因是,如果您的选择器在用户选择之后重新加载,那么选择器将仅显示单个值(用户刚刚选择)而不是所有值,因为您设置了为选择器提供数据的数组只有选定的值。由于您在加载时硬编码了不同的汽车选项,因此您无法再次获取不同的选项并且只是丢失了数据。
答案 3 :(得分:0)
试试这个:
pickOption = String(carName.text)
答案 4 :(得分:0)
这是一个简单的修复。如果您尝试启动数组而仅将一个值(carName.text
)存储在其中,请执行以下操作:pickOption = [carName.text]
如果您&#39;重新尝试将carName.text
添加到数组中,执行以下操作:pickOption.append("\(carName.text
)&#34;。祝你的项目好运!
答案 5 :(得分:0)
谢谢大家。 pickOption.append(carName.text)帮了忙。要在此处填写文本所在的文件。
导入UIKit
类CarListViewController:UITableViewController {
var cars = String var newCar:String =&#34;&#34;
@IBAction func cancel(segue:UIStoryboardSegue){
}
@IBAction func done(segue:UIStoryboardSegue){
public class ListUsersActivity extends Activity {
private String mCurrentUserId;
private ArrayAdapter<String> mNamesArrayAdapter;
private ArrayList<String> mNames;
private ListView mUsersListView;
private Button mLogoutButton;
private ProgressDialog mProgressDialog;
private BroadcastReceiver mReceiver = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_users);
mCurrentUserId = ParseUser.getCurrentUser().getObjectId();
mNames = new ArrayList<String>();
ParseQuery<ParseUser> query = ParseUser.getQuery();
// Don't include yourself!
query.whereNotEqualTo("objectId", mCurrentUserId);
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> userList, ParseException e) {
if (e == null) {
for (int i = 0; i < userList.size(); i++) {
mNames.add(userList.get(i).getUsername().toString());
}
mUsersListView = (ListView) findViewById(R.id.usersListView);
mNamesArrayAdapter = new ArrayAdapter<String>(
getApplicationContext(), R.layout.user_list_item,
mNames);
mUsersListView.setAdapter(mNamesArrayAdapter);
mUsersListView
.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a,
View v, int i, long l) {
openConversation(mNames, i);
}
private void openConversation(
ArrayList<String> mNames, int pos) {
ParseQuery<ParseUser> query = ParseUser
.getQuery();
query.whereEqualTo("username",
mNames.get(pos));
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> user,
ParseException e) {
if (e == null) {
Intent intent = new Intent(ListUsersActivity.this, MessagingActivity.class);
intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
startActivity(intent);
} else {
Toast.makeText(
getApplicationContext(),
"Error finding that user!",
Toast.LENGTH_LONG)
.show();
}
}
});
}
});
} else {
Toast.makeText(ListUsersActivity.this,
"Error loading user list", Toast.LENGTH_LONG)
.show();
}
}
});
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setTitle("Loading");
mProgressDialog.setMessage("Please Wait...");
mProgressDialog.show();
// broadcast receiver to listen for the broadcast
// from MessageService
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Boolean success = intent.getBooleanExtra("success", false);
Toast.makeText(ListUsersActivity.this, "Sinch has started and is working!", Toast.LENGTH_LONG).show();
mProgressDialog.dismiss();
// Show a toast message is the Sinch service failed to start
if (!success) {
Toast.makeText(ListUsersActivity.this,
"Messaging service failed to start",
Toast.LENGTH_LONG).show();
}
}
};
LocalBroadcastManager
.getInstance(this)
.registerReceiver(
mReceiver,
new IntentFilter(
"com.jordanpeterson.textly.messages.ListUsersActivity"));
}
}
覆盖func numberOfSectionsInTableView(tableView:UITableView) - &gt; Int { 返回1 }
var carDetailVC = segue.sourceViewController as! CarDetailViewController
newCar = carDetailVC.carName.text
cars.append(newCar)
self.tableView.reloadData()
}
override func viewDidLoad() {
super.viewDidLoad()
cars = ["BMW","Audi","Volkswagen"]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}