2015-06-27 108 views
1

我有一個超類,我有時顯示一個UIAlertView並處理委託(clickedButtonAtIndex)。 當我有一個也處理「clickedButtonAtIndex」的子類時,只有子類委託被調用。繼承 - UIAlertView在超類和子類

在這兩種情況下,UIAlertView中是表明這樣的:

[[[UIAlertView alloc] initWithTitle:@"" message:@"message" delegate:self cancelButtonTitle:@"Close" otherButtonTitles:@"Open", nil]show]; 

難道我做錯了什麼或做不好的設計具有相同的代表團在超類和子類都。我認爲「代表:自我」把他們分開了。

我可以在調試器中看到「自我」引用了我的子類,即使我在我的超類中,所以這可能是問題嗎?有什麼想法嗎?

+0

如果你想從子類中調用父類的方法,調用'[超級alertView:alertView clickedButtonAtIndex:buttonIndex]'。 –

+0

謝謝你的建議,但是我需要暴露超類中的方法。並在我所有的子類中調用它。這似乎有點矯枉過正,而不是正確的設計? – Nam

+1

你是針對ios 8嗎?如果是這樣,你應該使用uialertcontroller。 – Fogmeister

回答

0

當我在超類中調用時,「自我」引用了子類,我有點驚訝。

因此,我決定爲UIAlertView創建自己的代表團,以便與子類的代表團區分開來。這是因爲我不認爲: - 子類應該知道我的超類中的私有UIAlertView並調用它。 - 超類應該知道我的子類委託。

隨意添加你的想法:-)