2012-02-28 6 views
1

У меня есть два объекта UIWebView, которые имеют один и тот же делегат.Различают два экземпляра одного класса Objective-c?

Я хочу, чтобы методы делегата различали два объекта UIWebView.

Прямо сейчас я устанавливаю цвет фона одного из них на красный и используя это свойство, чтобы различать два, но его беспорядочный. Должен быть лучший способ ...

Спасибо!

+3

Любая причина, по которой вы не можете просто сравнить их с '=='? –

ответ

4

Я бы сохранил указатель на каждый экземпляр UIWebView в делегате и просто сравнил их в методах делегата. например,

@property (nonatomic, weak) UIWebView* webView1; 
@property (nonatomic, weak) UIWebView* webView2; 

... 


- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    if (self.webView1 == webView) { 
     // do something specific to webView1 
    } else if (self.webView2 == webView) { 
     // do something specific to webView2 
    } 
} 
3

Методы делегата в целом имеют экземпляр, который вызывает их как один из аргументов - например, в webView:didFailLoadWithError: первым аргументом будет веб-представление, которое не удалось загрузить.

Объект делегата/контроллера будет/должен иметь ссылки на экземпляры, для которых он делегирован.

Все, что вам нужно сделать, это сравнить ссылку, которую вы уже имеете на объект, который передан в методе делегата, чтобы узнать, какой веб-просмотр передал делегат.

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { 

    if(webView == myFirstWebView){ 
    } 
    else if(webView == mySecondWebView){ 
    } 
} 
3

все subivews UIView, в том числе UIWebView имеет свойство тега, который может быть использован следующим образом:

const NSInteger kLeftWebView = 20; 
const NSInteger kRightWebView = 21; 

... 
// somewhere in initialization code 
webView1.tag = kLeftWebView; 
webView2.tag = kRightWebView; 
... 
//check for tag value for distinguishing 
if (webView.tag == kLeftWebView) { 
    .... 
} 

вы также можете установить значение тега в InterfaceBuilder инспекторе свойств.

Смежные вопросы