#ios #xamarin #xamarin.ios
#iOS #xamarin #xamarin.ios
Вопрос:
У меня есть файл .Xib, который имеет пользовательский вид в Xamarin.ios. Этот файл Xib я добавил в viewcontroller. Теперь, согласно потоку, сначала загружаются методы класса viewcontroller, затем загружается файл Xib.
У меня есть определенные функциональные возможности, из-за которых мне нужно обновить метод в классе viewcontroller после загрузки файла .xib.
Допустим, я хочу изменить уменьшение ширины пользовательского представления в классе viewcontroller после загрузки файла .xib.
Это может быть просто, я новичок в ios, поэтому нужна помощь
Комментарии:
1. Давайте посмотрим, правильно ли я понял: вы хотите изменить
width
пользовательский вид, в котором также есть файл XIB. Это пользовательское представление является дочерним представлением вUIViewController
. Правильно ли это?2. Да, у меня есть контроллер, у которого есть файл .xib (пользовательский вид). Теперь, что мне нужно сделать, если я хочу изменить ширину этого пользовательского представления в контроллере после загрузки файла .xib. Я знаю, что могу сделать это, объявив ограничение в файле контроллера. Но я хочу сделать это после завершения загрузки файла .xib
Ответ №1:
Вы можете попробовать добавить ограничение для ширины пользовательского представления. Воспользуйтесь ограничением и измените его константу, когда требуется, и вызовите layout, если необходимо, для перезагрузки представления.
_width.Constraint.Constant = 100;
View.LayoutIfNeeded (); // The view could be custom view or view controller's view.
Комментарии:
1. Как я уже говорил в своих комментариях, я могу сделать это, объявив ограничение. Но у меня есть определенные функциональные возможности, из-за которых мне приходится вызывать метод viewcontroller для уменьшения ширины после того, как файл .xib loaded….In короче говоря, хотите обновить данные в viewcontroller после загрузки файла .xib
2. В какой операции жизненного цикла вы загружаете файл xib? Что именно вы имеете в виду под обновлением данных? Это обновляет значения в табличном представлении или что-то подобное?
3. Я загружаю это в viewDidLoad (). Обновление данных означает изменение ширины customview (.Xib-файл в контроллере). Проблема в том, что когда cutomview находится в классе viewcontroller — вызывается метод getData(), в зависимости от того, являются данные null или нет, я устанавливаю ширину этого пользовательского представления, используя ограничение, тот же getdata также вызывается в файле .xib
4. теперь, поскольку методы контроллера выполняются первыми — если в данных getdata отображается значение null, то ширина представления будет равна 0, но при вызове того же getdata в файле .xib данные не равны нулю, поэтому в этом случае я хочу отправить некоторые данные контроллеру, чтобы ширина снова вернулась к нормальной
5. Вы можете попробовать добавить общедоступный метод в свой пользовательский вид, чтобы возвращать bool, который указывает, являются ли данные нулевыми или нет public bool IsDataExist(){if(getData() == null) возвращает false; else возвращает true;} Далее в представлении view controllers появился вызов IsDataExist() и установка ширины пользовательского представления и вызов метода layout, если это необходимо, для обновления ограничений представления