2010-11-18 3 views
2

У меня есть 3 xib-файла, подключенных к одному классу, чтобы уменьшить дублирующее кодирование. Однако есть разные вещи, которые я хочу сделать, когда загружается новый файл nib (т. Е. В методе ViewDidLoad). Я думал о выполнении инструкции if для сравнения имени xib, отображаемого в настоящее время в строке. Я пытался выяснить, как это сделать большую часть дня, но мне не повезло. Вот какой-то псевдокод, если это вас смутило:Получите имя текущего xib xib, просматриваемого

if (currentXibInDisplay == @"XibFileName1") 
    // Do This... 
else if (currentXibInDisplay == @"XibFileName2") 
    // Do This... 

Есть способ сделать это, не так ли? Это кажется довольно простым, но сейчас я довольно сильно тупик. Спасибо за любую информацию, которую вы можете предоставить.

ответ

3

Вы можете использовать nibname

если вы говорите: NSString *name = self.view.nibname вы можете proove его

`[name isEqual:@"XIBName"]` 
+0

Являются ли виды в одном виде или отрываются? –

+0

Потому что, если эти subviews находятся в одном виде, вы можете сказать: «self.view.viewControllers << - NSArray» –

+3

Спасибо большое. Я попробовал свой код с помощью self.view.nibname, но он не нашел nibname в представлении. Я попробовал это с помощью self.nibname, и это сработало. Это именно то, что мне нужно. Спасибо всем за ваш вклад. – Brian

0

Контроллер вида, который вы загружаете, имеет метод initWithNibNamed:, вы можете переопределить его и сохранить, какой XIB будет загружен.

+0

Проблема этого подхода заключается в том, что имя СИБ может быть В параметре ноль. – tia

+0

Я не уверен, что правильно вас понимаю. У меня нет проблем с загрузкой нового XIB в представление. Дело в том, что если одно конкретное представление загружено, я хочу, чтобы в методе ViewDidLoad был добавлен дополнительный материал. Но я не знаю, как определить, загружен ли этот xib. Если я пропущу тебя, я извиняюсь. Это мой первый реальный проект для iOS. Если бы вы могли указать мне пример или что-то, я бы очень признателен ему. – Brian

+0

Я попытался сделать что-то по строкам if ([self.nibName compare: @ "CompareisonString"]) ... но это не помогло. Это всегда «правда», независимо от того, что находится в строке сравнения. – Brian

5

Я пытался использовать его с

self.view.nibName; 

Но это не будет работать, вместо этого попробуйте это

self.nibName; 
0

ViewController подклассы имеют строковое свойство nibName вы можете проверить против:

[self.nibName isEqualTo:@"XIBFileName"] 
Смежные вопросы